在方法中调用方法

时间:2014-01-31 22:12:40

标签: ruby any

在重新创建Enumerable模块进行练习时,我发现了#any

  def my_any?
    everything = false
    self.each do |item| #I switched this `each`. Originally, I had written `my_each`
      everything = true if yield(item)
    end
    everything
  end

现在,要创建一个#none?我需要做的就是这个,对吗?

  def my_none?
    !(my_any?)
  end

然而,当我调用该方法时,我收到一个错误:

arr = [1,2,3]
arr.my_none?{|x| x>2}
LocalJumpError: no block given (yield)

1 个答案:

答案 0 :(得分:4)

您正在使用yield中的my_any?关键字,这需要一个块。您可以捕获给my_none?的块并传递它:

def my_none? &blk
  !(my_any? &blk)
end