3
我有一條記錄,其中包含一個:name
。有沒有什麼辦法可以告訴clojure.core/name
如何從我的記錄中提取:name
?爲自定義記錄類型擴展「名稱」
我有一條記錄,其中包含一個:name
。有沒有什麼辦法可以告訴clojure.core/name
如何從我的記錄中提取:name
?爲自定義記錄類型擴展「名稱」
如果您可以更改defrecord
聲明,只需在該處實施clojure.lang.Named
界面。
(defrecord MyRecord [name]
clojure.lang.Named
(getName [this]
(:name this)))
(name (MyRecord. "Dan"))
;;=> "Dan""
同意的辦法,我想補充一件事:該記錄的聲明是擁有一定是一個必要的前提條件*假設*執行是*不*所擁有的接口。至少,如果既沒有類型/記錄也沒有接口/協議,則需要非常仔細地考慮這種實現。 [Clojure庫編碼標準](http://dev.clojure.org/display/community/Library+Coding+Standards)包含了協議的這個規則,但它顯然也適用於接口。 (我不認爲OP有這個問題,但我認爲一般警告是有保證的。) –
此外,我覺得getNamespace也應該實現(平凡) –
我在控制'defrecord',所以這是完全正確的我想要的是。謝謝! –