(deftype Bag [state]
Object
(toString [bag]
(str "Bag???" state)))
我想了toString看起來像什麼是良好的toString方法在Clojure的一個deftype'd對象
clojure.core=> (def b (Bag. {:apples 1 :bannanas 4}))
#'clojure.core/b
clojure.core=> (str b)
"BAG: {:apples 1 :bannanas 4}"
什麼是表示該信息的一個很好的方式clojurey? 是
"Bag/{:k :v}"
更好?你怎麼稱呼你的toStrings?
定義低級別。我正在嘗試創建新的集合類型(包和多圖)。你什麼時候使用defrecord或deftype,爲什麼? – 2010-09-11 11:26:00
在deftype中使用此方法會產生一個java.lang.StackOverflowError – 2010-09-11 11:35:10
是的,如果您要創建新的集合類型,deftype可能是正確的,而defrecord在需要類似於某些域數據的結構時更合適。 – 2010-09-11 19:38:12