2

次のコードは、Java 静的メソッドで複製したいセマンティクスを示しています。

((partial apply (fn [x y] (print x y \newline))) ["one" "two"])

1 つ 2 つ

なし

ただし、静的メソッドで評価すると、次の例外がスローされます。

((partial apply File/createTempFile) ["hello" ".txt"])

CompilerException java.lang.RuntimeException: 静的フィールドが見つかりません: クラス java.io.File の createTempFile、コンパイル中:(NO_SOURCE_PATH:50)

2 番目のシナリオで静的メソッドを使用して最初のシナリオを達成する方法はありますか?

4

1 に答える 1

5

applyにはclojure関数(iFnを実装する)が必要なので、静的メソッド呼び出しを無名関数でラップする必要があります。

user> ((partial apply #(java.io.File/createTempFile %1 %2) ["hello" ".txt"]))
#<File /tmp/hello8601033663867010647.txt>

または部分なし:

user> (apply #(java.io.File/createTempFile %1 %2) ["hello" ".txt"])
#<File /tmp/hello2555220024359994482.txt>
于 2012-06-27T17:42:43.523 に答える