나는 clojure.org documentation에 따라 deftype
에서 지원되는 Clojure 1.2, 특히 변경할 수있는 필드를 시험 중이다.Clojure deftype의 가변 필드?
그러나 나는 세트를 작동시킬 수 없습니다. 필드를 업데이트하는 구문은 무엇입니까? 아니면 아직 구현되지 않은 가변성인가?
(definterface IPoint
(getX [])
(setX [v]))
(deftype Point [x]
IPoint
(getX [this] x)
(setX [this v] (set! (.x this) v)))
user=> (def p (Point. 10))
user=> (.getX p)
10
user=> (.setX p 20)
ClassCastException: user.Point cannot be cast to compile__stub.user.Point
며칠 전부터 1.2 스냅 샷을 사용합니다.
감사합니다. 당신은 정보의 금광이야, 여기있어 기뻐 :) –
네, 정말 고마워. :-) –
나는 다시 강조하고 싶다 ... "당신은 그들을 사용해서는 안된다". volatile-mutable 및 : unsynchronized-mutable을 사용하지 마십시오. 이미이 경고가 귀하에게 적용되지 않으며 경고를 다시 말하고있는 이유를 이해하지 못한다면 ;-) – Jason