11

Is there something like struct-map for records? If not, should I use a struct (the docs discourage use of structs)?

Maybe I am doing the wrong thing completely? I have a rather complex function which currently takes a map of options. I am trying to clarify what option values are acceptable/used (by replacing it with a record). And now I want to interface that to code that has this information in maps (and which contain a superset of the data in the record).

4

1 に答える 1

20

単純に「文書化」するためにレコードを使用することはお勧めしません。プレーンな古いマップの方が柔軟で、シンプルで、簡単です。ドキュメントについては、ドキュメント文字列またはコメントを追加するか、 のような関数を作成するだけです(defn make-whatever [thing1 thing2])

それでもレコードが必要な場合は、clojure バージョン 1.3 以降を使用しているかどうかに応じて、いくつかの選択肢があります。その場合は、関数と、位置引数を取る関数(defrecord Whatever ...)も定義します。そうでない場合は、書き込むことができます(レコード タイプに適切な数の nil を渡します)。map->Whatever->Whatever(into (Whatever. nil nil nil) some-map)

于 2012-05-25T18:18:48.430 に答える