gpt4 book ai didi

ruby - Array.find方法问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:00 24 4
gpt4 key购买 nike

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

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

这里的@test_mappingsresult 都是Array 对象,但是我在ruby 文档中没有找到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

谁能给我解释一下吗? find 方法怎么会返回一个 Array 对象呢?提前致谢。

最佳答案

Array 包含 Enumerable 模块,它添加了 find方法。

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

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

关于ruby - Array.find方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com