Ben alanlar için tip ipuçlarıyla defrecord
kullanarak bir tür yarattı. Ancak, bu tip ipuçlarının kurucularda zorlanmadığını ve onlarla bazı garip şeyler yapabileceğimi fark ettim. Örnek için aşağıdaki pasajı bak:Tip defrecord kurucularınızdaki zorlanmaz ima
user=> (defrecord Person [#^String name #^Integer age])
user.Person
user=> (seq (.getConstructors Person))
(#<Constructor public user.Person(java.lang.Object,java.lang.Object,
java.lang.Object,java.lang.Object)>
#<Constructor public user.Person(java.lang.Object,java.lang.Object)>)
user=> (Person. (Integer. 123) "abhinav")
#:user.Person{:name 123, :age "abhinav"}
sağlanan tip ipuçlarıyla uyuşmuyor gösterilen yapıcı imzaları (bunlar String
ve Integer
ikisi için Object
kullanın) ve yanlış arazi türleri ile nesneleri oluşturmak mümkün.
Clojure 1.2.0-beta1'deyim.
kenara, tercih etmelidir '^' # 'dön ^' okuyucu meta tanıştırmak için; #^'nin eski anlamı 1.2'de kullanımdan kaldırılmıştır. –