首页 > 解决方案 > lambda函数不适用于每个

问题描述

我正在尝试将 lambdas 用作每个数组的块:

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

但我得到这个错误:

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

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

标签: ruby

解决方案


Range#each不需要 lambda,它需要一个块。lambda 作为参数传递,这Range#each是意料之外的。试试这个:

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

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

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

推荐阅读