2

私は Clojure/ClojureScript クロスオーバーの一部である関数を作成しており、そのdouble関数を使用していました。これを cljsbuild でコンパイルするdoubleと、宣言されていない var であると不平を言います。

WARNING: Use of undeclared Var my-ns/double 

double両方のプラットフォームで動作する代替機能は何ですか? 参考までに、除算後の有理数を double に変換するために使用しています。これを文字列としてフォーマットしています。

4

1 に答える 1

1

ClojureScript は現在、JavaScript プリミティブにマップされる整数リテラルと浮動小数点リテラルのみをサポートしています。Ratio、BigDecimal、および BigInteger リテラルは現在サポートされていません。

良いニュースは、JavaScript の浮動小数点数は既に倍精度であるため、明示的に倍精度にする必要がないことです。悪いニュースは、有理数がサポートされていないため、使用できないことです。

有理数を使用する式を書き直すか、JVM のコードを JS を対象とするコードから分離する必要があります。それを行うにはcljx プロジェクトを見てください。

ユースケースについて。あなたの説明から、次のような式を書き直そうとしていることがわかります。

(str (double (/ 2/4 2)))
=> "0.25"

この式を CLJS で次のように単純に書き換えることができます。

(str (double (/ (/ 2 4) 2)))
=> "0.25"

double の呼び出しを省略できることに注意してください。

(str (/ (/ 2 4) 2))
=> "0.25"

これで問題が解決することを願っています。

于 2014-07-23T11:02:48.770 に答える