一个 ruby 数组实例有超过 100 个方法,不包括 Object. 他们中的许多人非常灵活。该any?
方法(包含在enumerable中)采用一个块,允许您指定何时返回 true 的条件。
class Item < Struct.new(:attr1, :attr2)
end
p item_collection = Array.new(10){|n| Item.new(rand(10), n)}
#[#<struct Item attr1=7, attr2=0>, #<struct Item attr1=5, attr2=1>,
#<struct Item attr1=8, attr2=2>, #<struct Item attr1=3, attr2=3>,
#<struct Item attr1=9, attr2=4>, #<struct Item attr1=8, attr2=5>,
#<struct Item attr1=1, attr2=6>, #<struct Item attr1=6, attr2=7>,
#<struct Item attr1=4, attr2=8>, #<struct Item attr1=6, attr2=9>]
p item_collection.any?{|i| i.attr1 == 3}
#true
当 item_collection 应该有一个非常特殊的方法时,那么一种可能是在 item_collection 数组上定义它:
def item_collection.very_special_method
self.select{|i| i.attr1 == i.attr2}
end
p item_collection.very_special_method
# [#<struct Item attr1=3, attr2=3>]