2017-08-29 110 views
-1

我自己实施了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接收器?

+6

因为'对于i在self'返回'self'。 – mudasobwa

回答

3

为什么代码仍然返回自我,即使我没有明确地返回自己的最后一行?

如果不明确指定返回值,则方法将返回最后一个评估的表达式。您的方法中的最后一个表达式是for循环。

从它documentation

一个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

相关问题