lambda函数不适用于每个

时间:2018-05-03 19:07:05

标签: ruby

我试图将lambdas用作数组的块:

(1..10).each ->(i) {p i}

但是我收到了这个错误:

ArgumentError: wrong number of arguments (given 1, expected 0)                   

为什么会这样? lambda只有一个参数。

1 个答案:

答案 0 :(得分:6)

Range#each不接受lambda,需要一个块。 lambda作为参数传递,Range#each没有预料到。试试这个:

(1..10).each { |i| p i }

如果您愿意,可以转换lambda:

lam = ->(i) { p i }
(1..10).each(&lam)