web-dev-qa-db-ja.com

「配列要素」と「配列値」は同じですか?

Array := {"title": "Book Title", "author": "John Doe"}

一部の人々は次の用語を使用します:

  • titleおよびauthorkeysです。

  • Book TitleおよびJohn Doevaluesです。

  • "title": "Book Title"および"author": "John Doe"elements(= key-valueペア)。

しかし、一部の人々-これは:

  • Book TitleおよびJohn Doeelements(= values)。 (これらの単語は同義語として使用されます。)
  • "title": "Book Title"および"author": "John Doe"key-element pair(= key-valueペア)。

正しい用語はどれですか?それは存在しますか?

1
john c. j.

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に関連付けられた一意のオブジェクトです。

3
Christophe
Array := {"title": "Book Title", "author": "John Doe"}

ほとんどの言語はその構造を配列として参照しません(私が知っている唯一の主要な例外はPHPです)。より一般的にはdictionaryまたはmapと呼ばれます。これらの構造にはkeysおよびvaluesがあります。適切な配列は、要素/値のリストの「単なる」です(どちらの用語も正しい)。例は["John", "Jane", "Bob"]です。

あなたはcould辞書/マップをキーと値のペアの配列として解釈しますが、それは通常、それを考えるのに間違った方法です。配列は特定の順序を強制し(前の例では、"John""Jane"の前にあり、"Jane""Bob"の前にあります)、各要素にインデックスがあります("John"のインデックスは0、"Jane"のインデックスは1)。辞書でのキーと値のペアの順序は通常、不確定です。

4
Glorfindel

「Key-Value」の部分はスキップします。他の答えがそれについて話しているからです。 「配列」はさまざまな方法で使用されることを強調しています。

古典的には、配列はメモリの連続したブロックを表します。配列の名前はブロックの先頭を逆参照し、各要素の「名前」はメモリブロック内のオフセットです。言い換えれば、歴史的に配列は低レベルのデータ構造であり、シーケンシャルメモリアドレスに対する薄い抽象化です。

このコンテキストでは、配列の要素は参照渡しを意味します。配列値は、値渡しを提案します。配列要素を変更すると、配列も変更されます。配列値の変更mightは、配列データ構造を変更せずにローカル値のみを変更することを意味します。

繰り返しますが、これは1つのコンテキストにすぎず、誰かが実際に何を意味するかは、実際の意味によって異なります。しかし、配列がまだ古い値を保持していることを発見する前に、それらが何を意味するのかを知ることは役立ちます。

0
ben rudgers