【发布时间】:2016-04-01 15:51:31
【问题描述】:
我正在扫描source 中满足条件的元素。条件通常是(但不总是)正则表达式匹配。我正在寻找返回条件结果的find 版本,而不是原始元素。使用find,我必须重新计算成功元素的标准。
我得出的最好的结果是这样的:
source.find {|e| if (m = e.match(/(e.)/)); break m[0]; end}
为了避免分号导致 Rubocop 抱怨多语句行,我更喜欢这样写:
source.find {|e| break m[0] if (m = e.match(/(e.)/))}
但是 Ruby 无法处理前向引用(而且我没有足够的能力将e 重复用于m)。
有什么更优雅的方法可以通过捷径完成这项工作吗?
【问题讨论】:
-
如果您不知道,您可以为答案投票并选择您认为最有帮助的答案。
标签: ruby enumerator