gpt4 book ai didi

clojure - Clojure 中的嵌套类型?

转载 作者:行者123 更新时间:2023-12-02 10:13:20 27 4
gpt4 key购买 nike

在 clojure 中,如何输入类型提示我创建的类型? (我想嵌套类型。)

例如我原以为这会起作用:

(deftype A 
[#^somePrimitive someField])

(deftype B
[#^A Avalue])

这会显示一条错误消息:

Unknown location:
error: java.lang.ClassNotFoundException: A

注意:clojure 类型是一项新功能,目前仅存在于 clojure 的"new"分支中。

编辑:我对 clojure 中针对 java 和 clojure 类型的类型提示的不同方式感到困惑。java 类被暗示为

#^java.some.class

而 Clojure 类型暗示​​为:

#^:some.Namespace/type

最佳答案

对于每个 deftype,都会创建一个类型标记(基本上是命名空间限定的关键字),因此您不必在使用生成的类之前对代码进行 AOT 编译。

如果类型A在当前命名空间中,可以这样写:

(deftype B [^::A Avalue])

对于其他命名空间中的类型,使用其命名空间限定关键字:

(deftype B [^:user/A Avalue])

关于clojure - Clojure 中的嵌套类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1976423/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com