2011-01-04 14 views
0

メタデータを追加することで、型データをクロージャーベクトルに追加したいと考えています。メタデータをクロージャーベクトルに追加するにはどうすればよいですか?

(def r (ref [1 2 3])) 

[1 2 3]にメタデータを追加したいのですが、これを実現するには何を追加する必要がありますか。これはこれを行う正しい方法ですか?私は、ベクトル[1 2 3]〜 "r"にメタデータを追加するべきですか?

+0

はあなたがメタデータに型情報を入れたい理由として、いくつかのコンテキストを提供してもらえますか?多相性を使用しようとするなら、Clojureにはより良い方法が組み込まれています。 –

+0

私はリストが同じ構造を持っていても、私は別の場所に永続化したいいくつかのリストを持っているので、私はメタデータを入れたいです。これはこれを行う正しい方法ですか? – Zubair

答えて

1

私はそれを「R」に追加されるべきだと思う:

user=> (def r (ref [1 2 3] :meta {:type "vector"})) 
#'user/r 
user=> (meta r) 
{:type "vector"} 
+0

これは(def#^ {:type "vector"} r(ref [1 2 3])))とどう違うのですか? – Zubair

+0

私は:metaオプションはrefメタデータマップに追加のメタデータを追加しないと考えます(about:nsなど)。私は他の違いに関してあなたに答えることはできません。 – aeter

+0

@Zubair:Clojure 1.2では、 '#^ {...}'の構文は推奨されていません。代わりに '^ {...}'を使用してください。 – Ralph

関連する問題