我很好奇如何做一个Clojure deftype,它包含对自身的引用,例如

  (deftype BinaryTree [^BinaryTree left ^BinaryTree right])

这是行不通的...但是,我看不出有内在的原因,使得它不可能成为可能,因为底层的Java类完全能够引用自身。

我在这里做错了什么?

麦克风。

最佳答案

目前,字段上的^ Class提示(与^ primitive提示相反)已被丢弃,因此尝试放置它们没有任何好处。将来可能会改变。

但是,在类型定义中自动引用(例如,在方法主体中,而不是在字段中)在某种程度上可行,但是实现有点麻烦。鉴于有可能在Clojure中重写编译器,因此几乎没有动力在当前的Java编译器中修复自动引用。

关于data-structures - 如何实现递归deftype,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4817445/

10-10 06:27