我在ZenTest源代码中找到了这一行:
result = @test_mappings.find { |file_re, ignored| filename =~ file_re }
这里@test_mappings
和result
这两个都是Array对象,但我没有在ruby doc的Array类中找到'find'方法.我也尝试过irb:
irb(main):014:0> Array.respond_to? :find => false irb(main):015:0> [1,2,3].find LocalJumpError: no block given from (irb):15:in `find' from (irb):15:in `each' from (irb):15:in `find' from (irb):15 irb(main):016:0> [1,2,3].find{|x| x>1} => 2
可以有人向我解释一下吗?怎么能找到方法也返回一个Array对象?提前致谢.
Array
包括Enumerable
添加find
方法的模块.
在您测试的示例中Array.respond_to
.这只会对类的方法返回true Array
. find
是一个实例方法,因此respond_to?
必须在类的实例上调用.
>> a = Array.new => [] >> a.respond_to? :find => true