2017-08-29 6 views
-1

Ich implementiere die each Methode auf eigene Faust. Ich soll vor dem Schließen der Methode explizit self zurückgeben. Dies ist mein Code:Warum gibt mein Code den Empfänger zurück?

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] 

Warum wird der Code noch den Empfänger zurück, auch wenn ich nicht explizit self in der letzten Zeile zurückgekommen?

+6

Weil 'für i in self' kehrt' self'. – mudasobwa

Antwort

3

Warum gibt der Code immer noch selbst zurück, obwohl ich nicht selbst auf der letzten Zeile zurückgegeben habe?

Wenn Sie keinen Rückgabewert explizit angeben, gibt eine Methode den letzten ausgewerteten Ausdruck zurück. Der letzte Ausdruck in Ihrer Methode ist die for-Schleife.

Von seinem documentation:

Der Ergebniswert einer for Schleife ist der Wert iteriert, es sei denn break verwendet wird.

Beispiele:

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

Danke (beantwortet) :) – roppo

Verwandte Themen