尝试将块传递给sum方法时:
def sum(list, &block)
list.find_all{yield}.reduce(0, :+)
end
sum([12, 14, 0, 7, 56, 0]) {|i| i % 2 == 0}
我收到此错误:
NoMethodError:nil的未定义方法`%':NilClass
我的方法无法将i
识别为列表中的元素。我不知道如何解决它。有什么建议吗?
答案 0 :(得分:0)
list.find_all { |i| yield i }.reduce(0, :+)
或等效
list.find_all(&block).reduce(0, :+)
您最初编写的内容通过列表进行搜索,以便对于每个元素yield
- 这将调用没有参数的块,i
被分配nil
和{{1}很糟糕。