「列挙可能」とはどういう意味ですか?


8

私の数学のバックグラウンドは非常に貧弱です(つまり、最後に行われた関連する数学のクラスは2年前に高校の三角法でした-別の時代の別の話)。私は「Javascript:The Definitive Guide」を読んでいますが、それは繰り返し使用されている用語であり、私はそれをちょっと試してみました。しかし、私は章(第6章-オブジェクト)に来ました。プログラミング/ OOPでの用語とそのアプリケーションの理解の欠如が学習プロセスに有害になり始めています。オンライン辞書は役に立たないので、誰かが説明しやすい定義や例を示していますか?


どの辞書が役に立たなかったのですか?google.co.uk/search?q=define+enumerableの上位3つはすべて、それをうまく定義しているようです
jk。

JavaScriptのコンテキストでは、MDNの「プロパティの
列挙可能性

回答:


15

数学的には、列挙可能とは「自然数と1対1で対応できる」という意味です。コンピューティングにおけるほとんどの表現は、ビットの文字列で構成されているため列挙可能であり、ビットの文字列はバイナリシステムの数値を表すものと見なすことができます。

ただし、一部のデータ表現は列挙可能とは見なされません。たとえば、浮動小数点数はビットで構成されますが、実数の近似値として扱います。バイナリレベルでは、連続した浮動小数点数を「カウント」できますが、通常、これは数値アプリケーションには関係ありません。

他のいくつかの状況では、列挙が可能ですが列挙についての合意がありません。たとえば、ランタイムイメージ内のすべてのオブジェクトは有限のセットを構成し、列挙することができます。ガベージコレクターは、ライブオブジェクトをウォークスルーするときにそれを行います。ただし、アプリケーションは、タイプやモジュールの境界に関係なく、すべてのオブジェクトのセットをそのように列挙するわけではありません。同じ種類の、または関連する小さいオブジェクトを列挙します。

通常、列挙が正式に存在する場合、すべての当事者による合意があります。ここに値のセットがあります。これが最初です。それが後継者などです。

一部のプログラミング言語では、列挙型が存在します。コンパイラーによって一意の整数値にマッピングされる名前付きシンボリック定数を定義するための規律ある方法があります。そのような型が強く型付けされている場合、これらの定数は、列挙型と呼ばれる対応する型の変数にのみ格納できます。例えばタイプのユーザ定義の列挙は、month値のみを取ることができるjanuary介しdecember。これらは、0〜11の値に低減され、そのようなものとして、算術可能にsuccessor(january)製造february、または配列インデックスとして列挙を使用する可能性:配列定義たとえば、ある、の31目的列挙型をdays[january..december]days[january]したがって、自然数のサブセットとして機能し、他の別の名前によって、意味が明確になり(数値定数の代わりに名前が使用されます)、型チェックが行われます。列挙型の色redを型列挙型にcolor割り当てることはできませんmonth

列挙する動詞また、通常は段階的に、オブジェクトのリストを取得するためにAPIにクエリを実行するという概念を示すためにも使用されます。ネットワークインターフェースの列挙、ディレクトリ内のファイルの列挙などです。オブジェクトが他のいくつかのオブジェクトと1:Nで対応しているときはいつでも、それらの兄弟オブジェクトをウォークスルーしたり、リストとして取得したりできる列挙APIをサポートする可能性があります。用語は少しあいまいです。たとえば、場合によっては、要素が特定の順序でなくても、繰り返しなくてもすべてアクセスできる場合でも、それは列挙型です。ハッシュテーブルなどの一部の動的セットデータ構造は、特定の順序を提供せず、成長や縮小に応じて再編成できるため、挿入や削除が実行されるときに実際の順序が変化します。A前に来ることができますBを挿入CしますBが、A内部再編成が行われたため、たまたま前に来ています。


11

JavaScript:The Definitive Guideを取り出して第6章に切り替え、セクション6.5 Enumeratng Propertiesをすばやく読みました。さて、私も特に数学が得意ではないことを付け加えておきますが、うまくいけばこれは理にかなっています。

具体的には、「列挙可能」とは、そのセット/シーケンス/コレクション(またはJavaScriptのそのセクション:The Definitive Guideのオブジェクト)のアイテムにすばやく/簡単に対処できるように、何らかの順序付けスキームが実行されていることを意味します。

本で読んでいるものにそれを適用するために、クラスを拡張するプロパティが列挙可能であると著者が言ったとき、彼は単に、継承されたプロパティではなく、オブジェクトに追加したプロパティは反復可能であると述べています以上。したがって、次のようにオブジェクトを作成するとしますobj

var obj = {a: 1, b: 2, c: 3};

...次のループで繰り返します(ここでは説明的な変数名を使用しています)。

for (prop in obj) {
    console.log(prop);
}

... JSコンソールに記録された3つのアイテムが表示されます。

  • a
  • b
  • c

これは、オブジェクトのプロパティがあることを言っているobj、されている列挙キーでabc


1
その例でa, b, cは、列挙可能なプロパティは何ですか?また、列挙できないプロパティは、キーによって列挙されないプロパティですか?
gr33kbo1

2
丁度。JavaScriptの場合、基本オブジェクトから継承されていないオブジェクトのプロパティは列挙可能です。役立つ場合は、列挙可能なプロパティを、その親オブジェクトをfor-inループで反復するときに、アクセサーを受け取ることができるプロパティと考えてみてください。
nesv 2013年

9

enumerableは、列挙可能なオブジェクトです。「列挙型」とは、セット/コレクション/カテゴリのメンバーを1つずつカウントすることを意味します(通常、順番に、通常は名前で)。

列挙可能なオブジェクトは、他の一連のオブジェクトを1つずつ処理できるオブジェクトです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.