2013-03-05 11 views
6

Quanto segue funziona:Come map over sequenza di metodi Java da eseguire

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

Tuttavia il seguente codice non riesce

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

Come si crea un ss/collezione di metodi Java?

+1

Hai la risposta, ma sono per lo più interessati con i casi d'uso che hanno portato a porre la domanda. Non riesco a trovarne uno. Preferisco compilarli insieme per creare una funzione da eseguire. –

risposta

10

I metodi Java non sono cittadini di prima classe come le funzioni in clojure. Non è possibile passare i metodi java come parametri, restituire o archiviare in variabili e raccolte. Ma è possibile creare la funzione da memfn o solo funzione anonima che avvolge chiamata di metodo originale

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

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