我正在自己实施each
方法。我应该在关闭方法之前显式返回self
。这是我的代码:
module Enumerable
def my_each
for i in self
yield i
end
#self
end
end
[1,2,3,4].my_each {|x| x + 1} # => [1,2,3,4]
为什么代码仍会返回接收者,即使我没有在最后一行显式返回self
?
答案 0 :(得分:3)
为什么代码仍然返回自我,即使我没有在最后一行显式返回自我?
如果您未明确指定返回值,则方法将返回已计算的最后一个表达式。方法中的最后一个表达式是for
循环。
for
循环的结果值是迭代的值,除非使用break
。
示例:
for i in 1..10
end
#=> 1..10
for i in [1, 2, 3]
end
#=> [1, 2, 3]
for i in [1, 2, 3]
break :foo
end
#=> :foo