ruby - 在比较中使用 & 和枚举数
问题描述
我有以下引发错误的代码段:
w = %w[ant dog]
w.all?(&:length > 4)
它抛出一个错误comparison of Symbol with 4 failed (ArgumentError)
。
我不确定为什么&:length
是符号而不是数字。我试过了:
w.all?((&:length) > 4)
但这给了我一个语法错误。有没有办法让它工作或者我必须这样做:w.all? { |word| word.length > 4 }
。
解决方案
您收到以下错误,因为解释器实际上执行了以下代码:
&:length > 4
并且不能将 symbol:length
与 number进行比较4
。
有没有办法让它工作或者我必须这样做:w.all?{ |字| word.length > 4 }
您可以执行以下操作:
w.map(&:length).all? { |n| n > 4 }
但是下面的代码是最简单的方法:
w.all? { |word| word.length > 4 }
推荐阅读
- python - 如何使用opencv从python中的图像中找到矩形的坐标?
- android - 在 Android 设备上使用 Unity 的 Admob 广告
- objective-c - 在 Swift 中使用 Objective-C typedef void
- node.js - SELECT FROM sqlite_master db 查询返回未定义
- gradle - 每个工具链的 Gradle 本机库
- node.js - 从 nodejs 中的 Lambda 返回音频缓冲区时,AWS ALB 返回 502 Bad Gateway
- maxima - 将列表插入到 Maxima 上的循环方程中
- python - 在 Python 中,如何读取输入文件然后将其转换为莫尔斯电码?
- python - 在 csv 文件中写入字典
- qt - 如何告诉 Qt Creator 运行我的代码生成器以从 xxx.txt 文件生成 xxx.h 和 xxx.cpp 文件?