首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >to_enum(: scan )与单独使用拼音正则表达式的scan

to_enum(: scan )与单独使用拼音正则表达式的scan
EN

Stack Overflow用户
提问于 2017-02-18 05:03:37
回答 1查看 320关注 0票数 0

我不明白为什么我们要使用to_enum来使字符串成为可枚举的,而scan方法本身会返回一个匹配数组,在这种情况下to_enum做了什么?

这是to_enum的代码:

代码语言:javascript
复制
string = "The quick 12 brown foxes jumped over the 10 lazy dogs"

p string.to_enum(:scan, /\d+/).map {Regexp.last_match }

返回:

代码语言:javascript
复制
=> [#<MatchData "12">, #<MatchData "10">]

那么,当我们可以使用将返回数组的to_enum时,为什么我们使用这里的扫描来使字符串可枚举呢?

我也尝试过单独使用扫描,但得到了奇怪的结果:

代码语言:javascript
复制
p string.scan(/\d+/).map { Regexp.last_match}
=>[#<MatchData "10">, #<MatchData "10">]

这里有一些我遗漏和不理解的东西。有谁能解释一下吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-02-18 05:17:53

to_enum并没有让字符串成为可枚举的,它实际上让String#scan变成了一个懒惰的枚举器。enum_forto_enum的别名,这可能有助于在某种程度上澄清这里的事情。map生成扫描的每个结果-每次一个(懒惰地)-to块,它使用last_match Regexp类方法返回最后一个、最近的匹配。这是一个你不太可能在野外看到的人造的例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42307342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档