ruby - lambda函数不适用于每个
问题描述
我正在尝试将 lambdas 用作每个数组的块:
(1..10).each ->(i) {p i}
但我得到这个错误:
ArgumentError: wrong number of arguments (given 1, expected 0)
为什么会这样?lambda 只有一个参数。
解决方案
Range#each
不需要 lambda,它需要一个块。lambda 作为参数传递,这Range#each
是意料之外的。试试这个:
(1..10).each { |i| p i }
如果您愿意,可以转换 lambda:
lam = ->(i) { p i }
(1..10).each(&lam)
推荐阅读
- python - 函数被读取为变量并在 Python 中工作
- python - Python mysql复制 - 缺少数据
- vb.net - 使用类层次结构创建对象列表时出现问题。VB.net
- python - 从二进制作为浮点数(每个数字 4 个字节)读取到 csv 文件
- python - 为什么这个 django 表单无效?
- react-native - 在 React Native 中重置应用程序或状态
- mysql - node.js mysql不返回结果
- vb.net - 具有类属性的 EWS 电子邮件中的 VB.Net 超链接
- json - Marshal to JSON 结构扩展了另一个具有相同字段标签的结构
- python - 在 Python 3 中,计算来自命令行可执行文件的二进制输出的校验和