在重新创建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)
答案 0 :(得分:4)
您正在使用yield
中的my_any?
关键字,这需要一个块。您可以捕获给my_none?
的块并传递它:
def my_none? &blk
!(my_any? &blk)
end