2017-08-29 107 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

相關問題