2013-03-05 6 views
6

Im Folgenden wird arbeiten ausgeführt werden:Wie Abfolge von Java-Methoden zur Karte über zu

(map #(%1 "21") [identity]) 

jedoch der folgende Code

(map #(%1 "21") [.toString]) 

Wie erstelle ich eine f/Sammlung von Java-Methoden versagt?

+1

Sie die Antwort haben, aber ich bin hauptsächlich mit den Anwendungsfällen, die Sie führte die Frage zu stellen. Ich kann keinen finden. Ich würde sie lieber zusammenkompilieren, um eine Funktion zu erstellen. –

Antwort

10

Java-Methoden sind nicht erstklassige Bürger wie Funktionen in clojure. Sie können Java-Methoden nicht als Parameter übergeben, in Variablen und Sammlungen zurückgeben oder speichern. Aber Sie können Funktion von memfn oder nur anonyme Funktion erstellen, die ursprünglichen Methodenaufruf hüllt

(map #(%1 21) [(memfn toString)]) 
=> ("21") 

(map #(%1 21) [#(.toString %)]) 
=> ("21")