在Ruby 1.8.6中计算数组中值的实例

时间:2011-02-04 11:54:07

标签: ruby arrays

以下行在ruby 1.8.7中工作正常,而在1.8.6中则不行。我可以在1.8.6中使用什么替代方案

x = [3,4,5,6,7,78,4,3,2,5,5,3]
x.count(3)
=> 3

由于count不是1.8.6版本中Array的方法,因此我收到此错误。这个版本有类似的方法吗?

3 个答案:

答案 0 :(得分:20)

x = [3,4,5,6,7,78,4,3,2,5,5,3]
x.grep(3).size
#=> 3

答案 1 :(得分:11)

count = x.select {|e| e == 3}.size

答案 2 :(得分:9)

作为一般提示:有一个非常酷的backports library by Marc-André Lafortune,它试图实现Ruby 1.8.7,1.8.8的新功能(即Subversion中1_8分支的尖端)存储库),1.9.1和1.9.2标准库以及ActiveSupport中的一些select方法,在纯的,交叉1.8-1.9兼容的Ruby中。

所以,如果你只是做

require 'backports'

它会将Ruby 1.8.6,1.8.7或1.9.1变为尽可能接近Ruby 1.9.2,而不会降低到C或破坏向后兼容性。

免责声明:我自己并没有真正使用它,因为我认为无论如何都没有使用过时版本的Ruby。