Ruby 集合操作与正则表达式全解析
1. Ruby 集合与可枚举性
1.1 可枚举对象概述
在 Ruby 中,数组和哈希是常见的可枚举对象,这并不令人意外,因为它们显然是对象的集合。而字符串同样也是可枚举的,但其基本的 each 行为可能与我们的预期不同。
1.2 字符串作为可枚举对象
字符串类混入了 Enumerable 模块,但作为可枚举对象时,字符串的行为并非如我们所想。虽然对字符串及其部分进行过滤和操作没有限制,但要得到期望的结果,可能需要采用一些非直观的技术。
可枚举对象都有一个 each 方法,该方法会逐个返回集合中的每个元素。由于字符串在某种意义上是单个字符的集合,我们可能会期望 String#each 方法逐个返回字符串中的字符。然而,实际上 Ruby 将字符串视为行的集合。当使用 each 方法遍历字符串时,每次遇到新行才会返回一个新值,而不是每个字符都返回:
s = "This is\na multiline\nstring."
s.each {|e| puts "Next value: #{e}" }
上述代码输出如下:
Next value: This is
Next value: a multiline
Next value: string.
这表明遍历字符串的元素实际上是
Ruby集合与正则表达式详解
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



