- 浏览: 4485 次
- 性别:
- 来自: 成都
最近访客 更多访客>>
最新评论
-
nj0308:
23号 写道变长参数是不是这个:
scala> def ...
使用过程发现的Scala的一些缺陷 -
23号:
变长参数是不是这个:scala> def echo(ar ...
使用过程发现的Scala的一些缺陷 -
jhsea3do:
就是hash的问题了ruby 1.8.5irb(main):0 ...
个人感觉关于Set类的两个缺陷 -
rainchen:
是ruby 1.8.6的bug,我系统中有两个版本ruby,测 ...
个人感觉关于Set类的两个缺陷 -
qianjigui:
<div class="quote_title ...
个人感觉关于Set类的两个缺陷
文章列表
本人在自学使用Scala的过程中,发现此语言还是有一些缺陷,或者更确切的说有一些个人感觉还可以优化的地方(当然不排除初学者对该语言理解不够的地方)。
1、函数不支持变长参数。当然排除掉先定义全参数函数,然后定义缺少某些参数的函数通过缺省值指向全参数函数的情况。这儿的变参应该是指不指定最长参数个数的情况。当然,一般来说必须使用变参的情况还是不多,而且绝大多少都可以通过包含Collection类型(及其子类)的参数来变通实现,只是与Ruby比较显得啰嗦。
2、作为支持函数式编程的语言,本人觉得应该有缓存函数值的机制。当然前提是有区分有副作用函数和无副作用函数的机制(就像可变变 ...
- 2009-09-16 17:17
- 浏览 1624
- 评论(2)
1、map(collect) 和 map!(collect!) 方法返回类型不一致
map返回的是Array,而map!返回的是Set。
当然,这是小缺陷。
2、如果Set的元素也是Set类型,并不会对比较为true的多个元素进行合并
s1 = Set.new [1, 2] => #<Set: {1, 2}>
s2 = Set.new [1, 2] => #<Set: {1, 2}>
s1 == s2 => true
s = Set.new => #<Set: {} ...
缘由:我定义了一个类(彩票Cp),其中定义了类变量(@@cps)用于记录所有被实例化的对象,并通过类方法(self.get_cps)提供外部接口。
问题是,我要测试我的彩票程序在最近50期的实际情况与模拟产生的数据进行比较,但我只想一次把所有的历史数据都实例化,然后再修改Cp类的get_cps类方法。我的做法是这样的
类定义:
Class Cp
@@cps = []
class << self
def get_cps
@@cps
end
...
end
def initialize
@@ ...
先以一个实例引出问题。假设我们要对一篇文章中使用的单词进行详细统计,也就是我需要知道一个单词出现在文章的哪几行。显然,通过Hash来统计和使用都是最方便的。同时为了在遍历文件进行单词统计的过程中不出现刺眼的if判断,我们对Hash使用了缺省值。
word_lines = Hash.new([])
统计时直接使用 word_lines[word] << line
从表面逻辑上看,上面的使用似乎都没问题,程序也在执行得比较顺利 ......可是?...怎么回事,结果显然不对。调试吧,在统计时把word_lines/word/line/word_lines[wor ...