当前位置:  开发笔记 > 编程语言 > 正文

Array.find方法问题

如何解决《Array.find方法问题》经验,为你挑选了1个好方法。

我在ZenTest源代码中找到了这一行:

result = @test_mappings.find { |file_re, ignored| filename =~ file_re }

这里@test_mappingsresult这两个都是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对象?提前致谢.



1> Gordon Wilso..:

Array包括Enumerable添加find方法的模块.

在您测试的示例中Array.respond_to.这只会对类的方法返回true Array. find是一个实例方法,因此respond_to?必须在类的实例上调用.

>> a = Array.new
=> []
>> a.respond_to? :find
=> true

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有