以下行在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的方法,因此我收到此错误。这个版本有类似的方法吗?
答案 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。