> a = %w(a b c)
=> ["a", "b", "c"]
> a.select!{|e| !e.nil?}
NoMethodError: undefined method `select!' for ["a", "b", "c"]:Array
from (irb):2
ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-darwin10.5.0], MBARI 0x6770, Ruby Enterprise Edition 2010.02
医生说有一个名为select的方法!在数组中。
答案 0 :(得分:10)
Ruby 1.8.7 确实有Array#reject!
,但是:
>> a = [1, 2, nil]
=> [1, 2, nil]
>> a.reject! &:nil?
=> [1, 2]
答案 1 :(得分:7)
您链接的文档适用于Ruby 1.9.2。 Ruby 1.8.7 Arrays没有select!
。
编辑:作为未来的参考,您可以查看documentation以获取不同版本的Ruby。
答案 2 :(得分:3)
Array#select!
是在Ruby 1.9.2中引入的。
要在较旧的Ruby版本中获取它并且不再担心哪个版本的Ruby具有哪些方法,您可以require "backports/1.9.2/array/select"
。
您也可以使用Array#reject!
或合并#replace
和#select
。
答案 3 :(得分:1)
代码适用于我,但我正在运行Ruby 1.9.2(与您链接的文档的版本相同)。
这是1.8.7 documentation。请注意,只有select
可用,而不是select!
答案 4 :(得分:0)
问题是您使用的是Ruby 1.8.7。您引用的文档适用于Ruby 1.9.2。 1.8.7不包括Array#select!
,如您所见: