在clojure中,如何键入类型提示我创建的类型?(我想嵌套类型.)
我以为这会起作用:
(deftype A
[#^somePrimitive someField])
(deftype B
[#^A Avalue])
Run Code Online (Sandbox Code Playgroud)
这会显示一条错误消息:
Unknown location:
error: java.lang.ClassNotFoundException: A
Run Code Online (Sandbox Code Playgroud)
注意:clojure类型是一个新功能,目前只存在于clojure的"new"分支中.
编辑:我对java和clojure类型的clojure类型提示的不同方式感到困惑.java类被暗示为
#^java.some.class
Run Code Online (Sandbox Code Playgroud)
而clojure类型暗示为:
#^:some.Namespace/type
Run Code Online (Sandbox Code Playgroud)
Dan*_*ner 11
对于每个deftype,都会创建一个类型标记(基本上是一个名称空间限定的关键字),因此您无需在使用结果类之前对代码进行AOT编译.
如果类型A在当前名称空间中,您可以这样写:
(deftype B [^::A Avalue])
Run Code Online (Sandbox Code Playgroud)
对于其他名称空间中的类型,请使用其名称空间限定关键字:
(deftype B [^:user/A Avalue])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |