Tuple
の簡単な説明を教えてください。そして、それをいつ使用するかList
とVector
?タプルとは何ですか?タプル対リスト対ベクトル?
5
A
答えて
5
データ構造に挿入/削除操作を追加する場合は、リストを使用する必要があります。変数へのアクセスが非常に頻繁になるデータ構造では、ベクトルを使用してください。
タプルは、ペアオブジェクトがペアの要素に対して行うのと同じように、さまざまな型の要素を1つのオブジェクトにまとめるオブジェクトですが、任意の数の要素に対して一般化されています。 概念的には、それらは普通の古いデータ構造(Cのような構造体)に似ていますが、名前付きデータメンバを持つ代わりに、その要素はタプル内の順序でアクセスされます。
6
タプルは通常、マップ{:name "david" :age 35}
またはレコードなどの連想データ構造によってClojureで表されます。
ベクター["david" 35]
は、高速のポジショナルアクセス(= 35 (nth ["david" 35] 1))
を提供し、さまざまなタイプを保存できます。
リスト("david" 35)
または("david" "justin" "david")
は、ヘッドからの高速アクセスと早送りトラバーサルを提供します。異なるタイプを保持することはできますが、重複を含む可能性のある単一のタイプを所定の順序で含むことが最も一般的です。重複がなく、メンバーシップ/プレゼンスのチェックに最適化されたセット#{"david" "justin"}
と対照的です。
ソートされたリスト、セットおよびマップは、コンパレータを使用してオブジェクトの順序を維持します。
4clojureとclojuredocs.orgを参照してください。がんばろう!