2015-08-06 12 views
7

Ruby bietet die #tap-Methode, die es Ihnen ermöglicht, eine Variable aufzunehmen und Code darauf auszuführen, aber die ursprüngliche Variable anstelle des Ergebnisses Ihres Ausdrucks zurückgeben, dh:Gibt es ein Clojure-Äquivalent von Rubys #tap-Methode

def number 
    5.tap { |x| print x } # Prints 5, and returns 5 
end 

Gibt es eine in Clojure integrierte Funktion, die diese Funktionalität bereitstellen kann?

Antwort

9

Sie suchen nach doto. Hier ist dein Beispiel umgeschrieben es mit:

(doto 5 
    println) 

Es funktioniert ähnlich wie die -> Makro, dass sie den Wert durch eine Reihe von Funktionen geht. Ein wichtiger Unterschied besteht darin, dass der ursprüngliche Wert, den Sie übergeben haben, zurückgegeben wird und nicht der Wert, der von der endgültigen Funktion zurückgegeben wird.

Verwandte Themen