我理解find方法的工作,即查找第一次出现。但我不明白如何在课堂上实施find方法。有人可以解释下面这段代码的流程吗?还解释了find方法和yield之间的关系。如何在yield调用和find调用之间传递值?还解释一下nil的用途是什么。谢谢。
class Array
def find
each do |value|
return value if yield(value)
end
nil
end
end
[1,3,5,7,9].find {|v| v*v > 30}
答案 0 :(得分:2)
首先;你知道产量如何正确吗?
{| V | V * v→30}
的形式传递给该块
数组中的每个项都以paramv = every element
阐释:
return value if yield(value)
表示如果传递的块返回find
数组的任何项,则从true
方法返回数组的当前项。
所以,它只返回单个项目;实际上是匹配条件的第一项;与select
方法不同,它返回与条件匹配的每个项目。
2.2.1 :030 > [1,2,3].select{|x| x>1}
=> [2, 3]
此外; each do |value|
遍历self
类的当前/ Array
实例