Clojure中原语和装箱原语版本示例
Clojure在哪些地方原样使用Java原语并使用原语的盒装版本Clojure中原语和装箱原语版本示例,clojure,primitive,Clojure,Primitive,Clojure在哪些地方原样使用Java原语并使用原语的盒装版本 如我所见,Clojure提供了对原语的完全支持。Clojure中何时何地使用原语和装箱版本有明确的定义吗?我不认为Clojure何时使用无装箱数学的规则可以简单地概括为几行(但我可能错了)。但您可以使用将Clojure代码反编译为Java代码,以了解装箱和拆箱的情况。如果我计算这个代码 (ns.decompile) (:require[clj-java-decompiler.core:as d])) (d)反编译 (循环[产品1
如我所见,Clojure提供了对原语的完全支持。Clojure中何时何地使用原语和装箱版本有明确的定义吗?我不认为Clojure何时使用无装箱数学的规则可以简单地概括为几行(但我可能错了)。但您可以使用将Clojure代码反编译为Java代码,以了解装箱和拆箱的情况。如果我计算这个代码
(ns.decompile)
(:require[clj-java-decompiler.core:as d]))
(d)反编译
(循环[产品1
柜台10]
(如果(=0计数器)
产品
(重复(*产品计数器)
(十二月(()))
它打印出这个代码
//反编译类:游乐场/反编译$fn\uu 7159
打包游乐场;
导入clojure.lang.*;
公共最终类反编译$fn__7159扩展了函数
{
公共静态对象invokeStatic(){
长积=1L;
长乘法;
for(长计数器=10L;0L!=计数器;计数器=数字。十进制(计数器),乘积=乘法){
乘法=数字。乘法(乘积、计数器);
}
返回编号.num(产品);
}
@凌驾
公共对象调用(){
返回invokeStatic();
}
}
在这里,在我看来,编译器似乎理解我们正在使用
long
数字。您可能需要逐个查看装箱是否发生。您可以在此处找到有关Java interop re基本类型的一些好信息: