Ich habe eine verschachtelte Enum wie so, für die grundlegende relative Positionierung der Beschreibung:Die beste Möglichkeit, Enums für den Zugriff durch Switch-Anweisungen in Swift zu verschachteln?
enum Location {
enum Top {
case Left
case Right
case Center
}
enum Bottom {
case Left
case Right
case Center
}
enum Left {
case Top
case Bottom
case Center
}
enum Right {
case Top
case Bottom
case Center
}
enum Center {
case Center
}
}
Wenn ich versuche, eine switch
Anweisung, mit ihm zu laufen, keine der Aufzählungen zeigen als mögliche Fälle, und wenn ich versuche, zur Liste sie ich erhalte eine Fehlermeldung:
func switchOverEnum(enumCase: Location) {
switch enumCase {
case .Top:
print("hey this didn't cause an error whoops no it did")
}
}
der Fehler ist: Enum case 'Top' not found in type 'Location'.
Jetzt gibt es eine Version dieser Frage here, und nach den hilfreichsten Antwort, es sh
enum Location {
enum TopLocations {
case Left
case Right
case Center
}
enum BottomLocations {
case Left
case Right
case Center
}
enum LeftLocations {
case Top
case Bottom
case Center
}
enum RightLocations {
case Top
case Bottom
case Center
}
enum CenterLocations {
case Top
case Bottom
case Left
case Right
case Center
}
case Top(TopLocations)
case Bottom(BottomLocations)
case Left(LeftLocations)
case Right(RightLocations)
case Center(CenterLocations)
}
die völlig funktioniert, aber scheint ein wenig klobig oder unelegant oder un-Swift-like: Ould wie dies getan werden. Ist das wirklich der beste Weg?
Warum ist es nicht schwungvoll? Es gibt eine einfache Sache maximale Komplexität. Das ist total swifty. –
Unklar, was du verlangst. Dein Original war einfach albern ('.Top' ist _nicht_ ein Fall von Location, es ist ein verschachteltes Enum, also ist es schwer vorstellbar, was du erwartet hast), und" bester Weg "ist eine Frage der Meinung. – matt
Ich stimme zu, diese Frage als primär meinungsbezogen zu schließen, da Antworten nur auf Meinung und Vorliebe beruhen können, nicht auf Fakten. Erwägen Sie die Veröffentlichung in [Code Review] (http://codereview.stackexchange.com) mit einem vollständigen, realen Beispiel. – JAL