Schleifen durch Enumerationswerte
Ist es möglich eine Schleife über enum-Werte in Objective-C?
InformationsquelleAutor der Frage Frank | 2009-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich eine Schleife über enum-Werte in Objective-C?
InformationsquelleAutor der Frage Frank | 2009-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gegeben
können Sie iterieren die Elemente wie:
Beachten Sie, dass diese macht, die wirklich-nur-ein-int Wesen einer C-enum. Insbesondere können Sie sehen, dass ein C-enum nicht wirklich geben Sicherheit, Sie können ein int statt einem enum-Wert und Umgekehrt. Außerdem hängt das von der Reihenfolge der Deklaration der enum-Werte: fragile, gelinde gesagt. Darüber hinaus finden Sie Chucks Kommentar; wenn die enum-Elemente sind nicht aneinander Grenzen (z.B. weil Sie festgelegte, eindeutige, nicht fortlaufende Werte für einige Elemente), das funktioniert nicht bei allen. Huch.
InformationsquelleAutor der Antwort Barry Wark
Es ist ein bisschen ein Durcheinander (wie das gesamte Konzept, also... eh...) aber wenn du gehst, dies zu tun, mehrere Male, und Sie wollen in der Lage, sich mit der Möglichkeit der nicht-zusammenhängenden enums, können Sie eine (Globale Konstante) array, und haben (zu verwenden ennukiller Beispiel) Richtungen Richtungen[4] = {East, West, North, South};
und dann in der Schleife kann man darüber reden Richtungen[i] anstelle der Iteration direkt über die Richtungen selbst...
Wie gesagt, es ist hässlich, aber es ist etwas weniger zerbrechlich, denke ich...
InformationsquelleAutor der Antwort Brian Postow
Wenn Sie enum ist wie folgt definiert:
Können Sie eine Schleife durch, es auf diese Weise:
InformationsquelleAutor der Antwort ennuikiller
Auf der Suche nach dieser, habe ich gerade erfunden, die folgende Lösung, die erfüllt meine Anforderungen. Ich dachte, ich poste es hier für Menschen auf der Suche etwas ähnliches.
Sagen, ich habe eine enum.
In der Lage sein, um eine Schleife über es, ich definiere die folgenden Präprozessor-makro.
Dann benutze ich es in einer Schleife, die als solche:
Dieser stellt die Logik für die Iteration in einem Ort (makro -) code erhöht die Wartbarkeit.
InformationsquelleAutor der Antwort CloakedEddy
Für nicht-zusammenhängende enums können Sie Durchlaufen gültige Werte by doing:
InformationsquelleAutor der Antwort Matt Conway
Die Länge (Anzahl der Elemente) jeder Aufzählung kann festgestellt werden, indem man das array mit den Namen in der enumeration und der Einsatz der array-Länge. Verwenden Sie die GetNames Methode von Enum. Enum.GetNames(enumType).Länge.
InformationsquelleAutor der Antwort GhengisDon
Ich mag, was ich von hier
Iteration über enum in Objective C?
diese Weise können Sie halten das hinzufügen von Enumerationen, die später auf und nicht auf Ihre Schleifen?
InformationsquelleAutor der Antwort yeahdixon
Ich hasse es beschmutzt meine enum mit einem "Letzten" Eintrag (und die damit einhergehende beachten Sie, dass es nicht verwendet werden sollte, und dass es immer hast, gehalten werden, sowie, last), und fand nur einen Weg, um es (außer mit dem letzten enum-Eintrag als ein Geheimnis der "letzten", die, wieder, ich fühle mich eklig).
Wenn Sie definieren Ihre enum mit X-Makroskönnen Sie die Anzahl der Elemente in deinem enum ziemlich einfach. Siehe den link FMI auf, wenn könnten Sie diesen Ansatz verwenden - halten Sie die Dinge kurz, hier ist, wie es aussieht:
InformationsquelleAutor der Antwort beOn
InformationsquelleAutor der Antwort allanjwalter