最近刚读完《松本行弘的程序世界》,有这样一段描述。
"afdasfasdfads".scan(/fa./){|s| p s }
下面代码执行同样的动作。它不生成无用的数组,效率稍高一点。
"afdasfasdfads".scan(/fa./).each{|s| p s }
有这样的疑问,为什么第二种代码不生成无用的数组
?
于是看了 API:
Both forms iterate through str, matching the pattern (which may be a Regexp or a String). For each match, a result is generated and either added to the result array or passed to the block.
这里也是描述了either added to the result array or passed to the block
。