Ruby 1.9中Array#nitems的替代方法是什么?

3

Ruby 1.8的数组有一个方法nitems。但在Ruby 1.9中似乎已经取消了。请问在1.9中是否有替代方法?

1个回答

8

从 Ruby 1.9 开始,它已被删除。

您可以使用以下代码代替:

array = [nil, 2, "a", nil, 'b', nil]
array.count{|x| !x.nil?}
 => 3 

如果你的Ruby版本中没有这个方法,你可以重新定义它:

if ! Array.method_defined?(:nitems)
  class Array
    def nitems
      count{|x| !x.nil?}
    end
  end
end


a = [nil, 2, "a", nil, 'b', nil]
a.nitems
 => 3 

1
是的,这也可以工作,但它将创建一个新的数组实例作为compact的结果。 - Tilo
unlessif ! 更好。 - ugoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接