Reputation: 519
I'm working with swift enum
s. And my enum
looks like this:
enum DataStructures<T> {
case element(value: T)
case elements(value: [T])
}
and I initialized DataStructures
like this:
DataStructures.element(value: resultElement)
resultElement
is of ResultElement
type:
resultElement: ResultElement
My question is: Is there a way to extract resultElement
's value from enum's case
, to get that object back after DataStructures.element(value: resultElement)
has been passed to some method as a parameter for instance? Also that parameter looks like this:
data: DataStructures<ResultElement>
Thanks for your answers.
Upvotes: 1
Views: 615
Reputation: 1380
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)
}
Can refer you here (see the Associated Values section): https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html
Good luck!
Upvotes: 1
Reputation: 273380
Use pattern matching:
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
}
Upvotes: 1