Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 从Clojure解析重载的float/double方法变体_Types_Clojure_Overloading - Fatal编程技术网

Types 从Clojure解析重载的float/double方法变体

Types 从Clojure解析重载的float/double方法变体,types,clojure,overloading,Types,Clojure,Overloading,重载以接受双精度或浮点值作为第一个参数。我想调用双变量,但我正在从clojure long转换。我发现正确解析的唯一方法是强制使用double,然后调用java.lang.double构造函数。有没有一种不那么杂乱的方法 user> (Math/scalb 21 -63) IllegalArgumentException No matching method found: scalb clojure.lang.Reflector.invokeMatchingMethod (Reflect

重载以接受双精度或浮点值作为第一个参数。我想调用双变量,但我正在从clojure long转换。我发现正确解析的唯一方法是强制使用double,然后调用java.lang.double构造函数。有没有一种不那么杂乱的方法

user> (Math/scalb 21 -63)
IllegalArgumentException No matching method found: scalb  clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:80)

user> (Math/scalb (double 21) -63)
CompilerException java.lang.IllegalArgumentException: More than one matching method found: scalb, compiling:(NO_SOURCE_PATH:1:1) 

user> (Math/scalb (Double. 21) -63)
IllegalArgumentException No matching ctor found for class java.lang.Double  clojure.lang.Reflector.invokeConstructor (Reflector.java:183)

user> (Math/scalb (Double. (double 21)) -63)
2.2768245622195593E-18

您还需要转换第二个参数:它是一个int参数,但您的数字是长的。显然,编译器在某些情况下(比如这一次)可以解决这个问题,但一旦开始提供类型提示,就需要完成消歧

user> (Math/scalb (double 21) (int -63))
2.2768245622195593E-18