find方法如何在Ruby

时间:2015-10-20 05:20:40

标签: ruby

我理解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} 

1 个答案:

答案 0 :(得分:2)

首先;你知道产量如何正确吗?

  

{| V | V * v→30}
  数组中的每个项都以param v = 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实例