1

Clojure REPL セッションは次のとおりです。

moon.core> Double
java.lang.Double
moon.core> (Double/parseDouble "1.0")
1.0
moon.core> Double/parseDouble
CompilerException java.lang.RuntimeException: Unable to find static field: parseDouble in class java.lang.Double, compiling:(*cider-repl moon*:1:7159) 

を参照することはできますし、呼び出すDoubleことはできますが、直接参照することはできません。Java 標準ライブラリの他のクラス メソッドでも同じ結果が得られます (例: ) 。それはなぜですか? Double/parseDoubleMath/absInteger/parseInt

4

2 に答える 2

5

静的な Java メソッドを、ファースト クラスのものとして扱うことができる Clojure 関数に変換したい場合は、関数を簡単にラップすることができます。

(def pd #(Double/parseDouble %))
#'user/pd
(pd "1.0")
1.0

このmemfn関数を使用して、Java インスタンス メソッドに対してこのようなことを行うことができます。

于 2016-11-20T23:00:20.860 に答える
3

クラス で呼び出されるstaticフィールドがないため、これは機能しません (REPL またはそれ以外の場合) 。方法です。呼び出すことはできますが、フィールドのようにアクセスすることはできません。parseDoubleDoubleparseDouble

于 2016-11-20T19:16:48.277 に答える