Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
266 views
in Technique[技术] by (71.8m points)

ios - Have a variable with multiple types in Swift

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

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

This variable should be able to hold only values of type Int and String.

Is this possible?

Thanks for your help ;)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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 { ... }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...