【发布时间】:2012-07-20 18:21:31
【问题描述】:
我正在学习 each 在 ruby 中如何工作的详细信息,并尝试了以下代码行:
p [1,2,3,4,5].each { |element| el }
结果是一个数组
[1,2,3,4,5]
但我不认为我完全理解为什么。为什么each的返回值是同一个数组?不都只是提供了一种迭代的方法吗?还是 each 方法返回原始值只是常见的做法?
【问题讨论】:
-
ruby API 文档说
each {|item| block } → ary所以是的each{block}Array类的方法返回self -
原因更多是为了方便。 Ruby 返回原始数组基本上是一个“免费”操作(否则它将返回
nil)。作为奖励,它允许您根据需要链接方法以进一步对数组进行操作。 -
一个小点:如果不存在块,[1,2,3].each 返回 [1,2,3].to_enum(至少在 Ruby 2.0 中)。