2013-03-05 7 views
6

Poniższe zadziała:Jak mapować przez sekwencję metod Javy być wykonywane

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

Jednak poniższy kod nie

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

Jak mogę utworzyć nast/zbiór metod Javy?

+1

masz odpowiedź, ale jestem przede wszystkim dotyczy przypadków użycia, które doprowadziły do ​​zadać pytanie. Nie mogę tego znaleźć. Wolałbym je skompilować, aby zbudować funkcję do wykonania. –

Odpowiedz

10

Metody Java nie są obywatelami pierwszej klasy, jak funkcje w clojure. Nie można przekazywać metod java jako parametrów, zwracać ani przechowywać w zmiennych i kolekcjach. Ale można utworzyć funkcję memfn lub tylko anonimową funkcję, która owija pierwotne połączenie metody

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

(map #(%1 21) [#(.toString %)]) 
=> ("21") 
Powiązane problemy