11
我很好奇如何做一個包含自身引用的Clojure deftype,如何實現遞歸deftype
(deftype BinaryTree [^BinaryTree left ^BinaryTree right])
這不起作用......但是我看不出內在的原因,因爲底層的Java類完全可以引用自己。
我在這裏做錯了什麼?
Mike。
我很好奇如何做一個包含自身引用的Clojure deftype,如何實現遞歸deftype
(deftype BinaryTree [^BinaryTree left ^BinaryTree right])
這不起作用......但是我看不出內在的原因,因爲底層的Java類完全可以引用自己。
我在這裏做錯了什麼?
Mike。
當前^字段提示字段(與^原始提示相對)被放棄,所以在嘗試放置它們時沒有任何好處。這可能在未來發生變化。
但是在類型定義中的自動引用(例如,在方法體中,而不是在字段中)有些作用,但是實現有點破解。考慮到在Clojure中重寫編譯器的承諾,在當前的java編譯器中修復自動引用的動機不大。
謝謝 - 非常有幫助的解釋(雖然也很煩人,因爲我真的想使用一些遞歸引用!) – mikera 2011-02-02 20:20:15