MattCodes
MattCodes

Reputation: 519

How to get value of enums case?

I'm working with swift enums. 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

Answers (2)

timaktimak
timaktimak

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

Sweeper
Sweeper

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

Related Questions