为什么我的代码返回接收器?
问题描述:
我自己实施了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
接收器?
答
为什么代码仍然返回自我,即使我没有明确地返回自己的最后一行?
如果不明确指定返回值,则方法将返回最后一个评估的表达式。您的方法中的最后一个表达式是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
+0
谢谢(回答):) – roppo
因为'对于i在self'返回'self'。 – mudasobwa