2017-04-04 9 views
1

Ich arbeite mit swift enum s. Und mein enum sieht wie folgt aus:Wie bekommt man einen Enum-Fall?

enum DataStructures<T> { 
    case element(value: T) 
    case elements(value: [T]) 
} 

und ich initialisiert DataStructures wie folgt aus:

DataStructures.element(value: resultElement) 

resultElement ist von ResultElement Typ:

resultElement: ResultElement 

Meine Frage ist: Gibt es eine Möglichkeit, Extrahieren Sie resultElement 's Wert von Enum case, um dieses Objekt nachzurück zu bekommenwurde beispielsweise als Parameter an eine Methode übergeben? Auch dieser Parameter sieht so aus:

data: DataStructures<ResultElement> 

Danke für Ihre Antworten.

Antwort

1

Verwenden Mustervergleich:

if case .element(let value) = someParameter { 
    print(value) // or do whatever you want with it 
} else { 
    // do some other thing in the case of the parameter not being .element 
} 
+0

Dank Sir, das hat mir geholfen, mein Problem zu beheben. – MattCodes

+0

@MattCodes Wenn Sie meinen, dass meine Antwort Ihre Frage beantwortet, ziehen Sie bitte in Betracht, indem Sie auf dieses Häkchen klicken! – Sweeper

1
enum DataStructures<T> { 
    case element(value: T) 
    case elements(value: [T]) 
} 

let x = DataStructures<Int>.element(value: 5) 

switch x { 
case .element(let value): 
    print(value) // 5 
case .elements(let values): 
    print(values) 
} 

Können Sie hier beziehen (siehe die zugehörigen Werte Abschnitt): https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html

Viel Glück!

+0

Danke für Ihre Antwort. Ich kannte den Mustervergleich nicht, so wie es Sweeper in der Antwort vorgeschlagen hatte. – MattCodes

Verwandte Themen