Was bedeutet "aufzählbar"?


8

Mein Hintergrund in Mathematik ist sehr schlecht (dh der letzte relevante Mathematikunterricht war vor zwei Jahren die Trigonometrie an der High School - eine andere Geschichte für eine andere Zeit). Ich lese 'Javascript: The Definitive Guide' und es ist ein Begriff, der wiederholt verwendet wird und mit dem ich sozusagen nur gelaufen bin. Aber ich bin zu einem Kapitel (Kapitel 6 - Objekte) gekommen, in dem mein Unverständnis über den Begriff und seine Anwendung in der Programmierung / OOP den Lernprozess beeinträchtigt. Die Online-Wörterbücher helfen nicht weiter. Hat jemand eine erklärbarere Definition und / oder ein Beispiel, das er zeigen kann?


Welche Wörterbücher haben nicht geholfen? Die drei besten von google.de/search?q=define+enumerable scheinen es alle gut zu definieren
jk.

Im Zusammenhang mit JavaScript, siehe " Aufzählbarkeit und Besitz von Eigenschaften " auf MDN
TehShrike

Antworten:


15

Mathematisch bedeutet aufzählbar, dass "eine Eins-zu-Eins-Entsprechung mit den natürlichen Zahlen erfolgen kann". Die meisten Darstellungen beim Rechnen sind aufzählbar, da sie aus Bitfolgen bestehen und Bitfolgen verwendet werden können, um Zahlen im Binärsystem zu bezeichnen.

Einige Datendarstellungen werden jedoch nicht als aufzählbar angesehen. Zum Beispiel besteht eine Gleitkommazahl aus Bits, aber wir arbeiten damit als Annäherung an eine reelle Zahl. Auf der Binärebene können wir durch aufeinanderfolgende Gleitkommazahlen "zählen", aber normalerweise ist dies in numerischen Anwendungen nicht relevant.

In einigen anderen Situationen ist eine Aufzählung möglich, es besteht jedoch keine Einigung über eine Aufzählung. Beispielsweise bilden alle Objekte in Ihrem Laufzeitbild eine endliche Menge und können aufgelistet werden. Der Garbage Collector macht das, wenn er durch die lebenden Objekte geht. Die Anwendung zählt jedoch nicht die Menge aller Objekte auf diese Weise auf, ohne Rücksicht auf Typ- oder Modulgrenzen. Es werden kleinere Objekte der gleichen Art oder verwandter Objekte aufgelistet.

Wenn eine Aufzählung formal vorliegt, sind sich normalerweise alle Parteien einig. Hier ist eine Reihe von Werten. Dieser ist der erste. Dieser ist sein Nachfolger und so weiter.

In einigen Programmiersprachen gibt es Aufzählungstypen: eine disziplinierte Methode zum Definieren benannter symbolischer Konstanten, die vom Compiler eindeutigen ganzzahligen Werten zugeordnet werden. Wenn solche Typen stark typisiert sind, können diese Konstanten nur in Variablen des entsprechenden Typs gespeichert werden, die als Aufzählungstyp bezeichnet werden . Beispielsweise kann eine benutzerdefinierte Aufzählung vom Typ monthnur die Werte januarydurch annehmen december. Diese werden auf die Werte 0 bis 11 reduziert und können Arithmetik wie das successor(january)Erzeugen februaryoder die Möglichkeit ermöglichen, die Aufzählung als Array-Index zu verwenden: Definieren eines Arrays days[january..december]mit days[january]beispielsweise 31. Der Zweck eines Aufzählungstypssoll daher als Teilmenge der natürlichen Zahlen durch andere Namen dienen, die verschieden sind und Klarheit in der Bedeutung bieten (Namen werden anstelle von numerischen Konstanten verwendet) und die Typprüfung: Die Farbe redeiner colorAufzählung kann keiner Typaufzählung zugeordnet monthwerden .

Das Verb aufzählenwird auch verwendet, um das Konzept des Abfragens einer API zum Abrufen einer Liste von Objekten zu bezeichnen, normalerweise schrittweise: Auflisten der Netzwerkschnittstellen, Auflisten der Dateien in einem Verzeichnis usw. Wenn sich ein Objekt in einer 1: N-Korrespondenz mit einigen anderen Objekten befindet, kann es eine Aufzählungs-API unterstützen, mit der wir durch diese Geschwisterobjekte gehen oder sie als Liste abrufen können. Die Terminologie ist etwas trübe; In einigen Fällen ist es beispielsweise immer noch eine Aufzählung, auch wenn die Elemente nicht in einer bestimmten Reihenfolge vorliegen, aber alle ohne Wiederholung besucht werden können. Einige dynamische Satzdatenstrukturen, wie z. B. Hash-Tabellen, bieten keine bestimmte Reihenfolge und können sich beim Wachsen und Verkleinern neu organisieren, sodass die tatsächliche Reihenfolge beim Einfügen und Löschen variiert. Akann vorher kommenB, aber wenn wir einfügen C, kommt jetzt Bzufällig vor, Aweil eine interne Reorganisation stattgefunden hat.


11

Ich habe gerade meine Kopie von JavaScript: The Definitive Guide herausgezogen , bin zu Kapitel 6 übergegangen und habe den Abschnitt 6.5 Enumeratng Properties schnell durchgelesen . Nun sollte ich hinzufügen, dass ich auch kein besonders starker Mathematiker bin. Hoffentlich macht dies Sinn:

Insbesondere bedeutet "aufzählbar", dass eine Art Bestellschema stattfindet, so dass Sie die Elemente in dieser Menge / Sequenz / Sammlung (oder in diesem Abschnitt von JavaScript: The Definitive Guide , das Objekt) schnell / einfach adressieren können. .

Um es auf das anzuwenden, was Sie in dem Buch lesen, wenn der Autor sagt, dass die Eigenschaften, mit denen Sie eine Klasse erweitern, aufzählbar sind , sagt er lediglich, dass jede Eigenschaft, die Sie einem Objekt hinzufügen (nicht die, die geerbt werden), iteriert werden kann Über. Wenn Sie also ein Objekt objwie folgt erstellen :

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

... wenn Sie mit der folgenden Schleife darüber iterieren (ich verwende hier beschreibende Variablennamen):

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

... werden drei Elemente angezeigt, die an Ihrer JS-Konsole protokolliert sind:

  • ein
  • b
  • c

Dies wird Ihnen sagen , dass die Eigenschaften im Objekt objwerden aufgezählt durch die Tasten a, bund c.


1
Sind in diesem Beispiel a, b, calso enumerable Eigenschaften? Und alternativ ist eine nicht aufzählbare Eigenschaft eine Eigenschaft, die nicht durch Schlüssel aufgezählt wird?
gr33kbo1

2
Genau. Im Fall von JavaScript sind alle Eigenschaften eines Objekts aufzählbar , die nicht vom Basisobjekt geerbt werden . Wenn es hilft, versuchen Sie vielleicht, sich eine aufzählbare Eigenschaft als eine Eigenschaft vorzustellen, deren Accessor Sie erhalten können, wenn Sie mit einer for-inSchleife über das übergeordnete Objekt iterieren .
Nesv

9

Eine Aufzählung ist ein Objekt, das aufgezählt werden kann. "Aufgezählt" bedeutet, die Mitglieder einer Menge / Sammlung / Kategorie einzeln zu zählen (normalerweise in der Reihenfolge, normalerweise nach Namen).

Eine Aufzählung ist dann ein Objekt, das eine Reihe anderer Objekte nacheinander durchlaufen kann.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.