2013-03-05 6 views
6

を実行するためのJavaメソッドのシーケンスを超えるマッピングする方法を次のコードは、以下が動作する

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

を失敗しかし

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

をどのように私はJavaメソッドの配列/コレクションを作成するのですか?

+1

をラップmemfnか、単に匿名関数で関数を作成することができますが、私は質問をするためにあなたを導いたユースケースとほとんど心配です。私は見つけられないようです。私はむしろ一緒に 'comp'を実行して実行する関数を構築したいと思います。 –

答えて

10

Javaメソッドは、clojureの関数のようなファーストクラスの市民ではありません。 Javaメソッドをパラメータとして渡したり、変数やコレクションに戻ったりストアしたりすることはできません。しかし、あなたは、元のメソッドの呼び出しにあなたが答えを持っている

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

(map #(%1 21) [#(.toString %)]) 
=> ("21") 
関連する問題