Have a variable with multiple types in Swift

后端 未结 4 886
北海茫月
北海茫月 2021-01-12 03:24

I would like to have a variable, which can have multiple types (only ones, I defined), like:

var example: String, Int = 0
example = \"hi\"

4条回答
  •  生来不讨喜
    2021-01-12 03:45

    An “enumeration with associated value” might be what you are looking for:

    enum StringOrInt {
        case string(String)
        case int(Int)
    }
    

    You can either assign a string or an integer:

    var value: StringOrInt
    value = .string("Hello")
    // ...
    value = .int(123)
    

    Retrieving the contents is done with a switch-statement:

    switch value {
    case .string(let s): print("String:", s)
    case .int(let n): print("Int:", n)
    }
    

    If you declare conformance to the Equatable protocol then you can also check values for equality:

    enum StringOrInt: Equatable {
        case string(String)
        case int(Int)
    }
    
    let v = StringOrInt.string("Hi")
    let w = StringOrInt.int(0)
    if v == w { ... }
    

提交回复
热议问题