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'を制御している。私が望むものありがとう! –