我只是从
Ruby
我碰到了一个问题,我觉得这对语言很重要,所以我不想只是通过它。我真的很感激回答,其中不仅包括一个工作的例子,但至少简短的解释,我错了我的。
第一
步骤是使用此方法:
def filter (arr)
arr.each do |e|
puts e if e % 2 != 0
end
end
filter [1, 2, 3, 4, 5, 6]
1 3 5[在0.2秒内完成]
我试过这个:
def filter (arr)
arr.each do |e|
puts e if yield(e)
end
end
filter ([1, 2, 3, 4, 5, 6]) { |n| n.odd? }
我得到了同样的结果:
1 3 5[在0.2秒内完成]
第三
filter
像这样的方法
filter([1, 2, 3, 4, 5, 6], &is_odd)
. 但由于我还没弄明白,我现在被困在这一点上:
is_odd = lambda { |n| puts n if n.odd? }
def filter ()
arr = [1, 2, 3, 4, 5, 6]
arr.each do |e|
is_odd(e)
end
end
filter &is_odd
我得到了以下错误:
block in filter': undefined method
你觉得奇怪吗主要:对象
(命名者)
功能和使用方法如下:
def filter ()
is_odd = lambda { |n| puts n if n.odd? }
arr = [1, 2, 3, 4, 5, 6]
arr.each &is_odd
end
filter
is_odd
外面
筛选器([1、2、3、4、5、6],&I是奇数)
.
我想知道是否真的可以这样使用lambda,如果可以,我的逻辑在哪里失败了?