Array := {"title": "Book Title", "author": "John Doe"}
一部の人々は次の用語を使用します:
title
およびauthor
はkeysです。
Book Title
およびJohn Doe
はvaluesです。
"title": "Book Title"
および"author": "John Doe"
はelements(= key-valueペア)。
しかし、一部の人々-これは:
Book Title
およびJohn Doe
はelements(= values)。 (これらの単語は同義語として使用されます。)"title": "Book Title"
および"author": "John Doe"
はkey-element pair(= key-valueペア)。正しい用語はどれですか?それは存在しますか?
elementという用語は、個別のオブジェクトセットのメンバーです。この用語は、数学的 集合論 に由来しています。これは、あらゆる種類の collections について、同じ意味のコンピュータサイエンスアルゴリズムで使用されます。
Arrays は、古典的なインデックス付き配列、またはより複雑な 連想配列 は、キー(またはインデックス付き配列の場合はインデックス)と価値。
要素は実際の値ではありません。値だけでは十分ではありません。IDがなく、2つの同じ値を区別できません。例:
string colour[] = { "red", "blue", "red" } // language with classical arrays
Array := {"title": "Doe", "author": "Doe"} // language with associative arrays
値が実際に要素である場合、「2つの要素の入れ替え」をどのように理解しますか。たとえば、"red"
そしてその "blue"
?交換したい「赤」を言うためにここで何が欠けていますか?キー(またはインデックス)!
現在、可変性を考慮せずに正確な定義を行うことはできません。
要素が不変である場合、キーと値の組み合わせ(またはインデックスと値)は、値だけよりも要素になるためのより良い候補です。 0-red、1-blue、2-redは異なる要素です。
要素が変更可能な場合、組み合わせKey-Valueは要素を正しく定義しなくなります。このセマンティックでは、colour[1]
「赤」から「緑」まで、それは同じ要素ですが、新しい値を持ちます。ここで、要素は、key/indexに関連付けられた一意のオブジェクトです。
Array := {"title": "Book Title", "author": "John Doe"}
ほとんどの言語はその構造を配列として参照しません(私が知っている唯一の主要な例外はPHPです)。より一般的にはdictionaryまたはmapと呼ばれます。これらの構造にはkeysおよびvaluesがあります。適切な配列は、要素/値のリストの「単なる」です(どちらの用語も正しい)。例は["John", "Jane", "Bob"]
です。
あなたはcould辞書/マップをキーと値のペアの配列として解釈しますが、それは通常、それを考えるのに間違った方法です。配列は特定の順序を強制し(前の例では、"John"
が"Jane"
の前にあり、"Jane"
が"Bob"
の前にあります)、各要素にインデックスがあります("John"
のインデックスは0、"Jane"
のインデックスは1)。辞書でのキーと値のペアの順序は通常、不確定です。
「Key-Value」の部分はスキップします。他の答えがそれについて話しているからです。 「配列」はさまざまな方法で使用されることを強調しています。
古典的には、配列はメモリの連続したブロックを表します。配列の名前はブロックの先頭を逆参照し、各要素の「名前」はメモリブロック内のオフセットです。言い換えれば、歴史的に配列は低レベルのデータ構造であり、シーケンシャルメモリアドレスに対する薄い抽象化です。
このコンテキストでは、配列の要素は参照渡しを意味します。配列値は、値渡しを提案します。配列要素を変更すると、配列も変更されます。配列値の変更mightは、配列データ構造を変更せずにローカル値のみを変更することを意味します。
繰り返しますが、これは1つのコンテキストにすぎず、誰かが実際に何を意味するかは、実際の意味によって異なります。しかし、配列がまだ古い値を保持していることを発見する前に、それらが何を意味するのかを知ることは役立ちます。