ruby是否有数组方法选择!或不?

时间:2011-03-11 17:32:06

标签: ruby

> 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的方法!在数组中。

http://www.ruby-doc.org/core/classes/Array.html#M000252

5 个答案:

答案 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!,如您所见: