Swift:可以有条件地声明变量吗?



假设存在一个struct,它有两个变量:ab

是否有可能根据条件声明两个变量中的一个而忽略另一个?

换句话说,是否可能从这个struct:

struct example {
let a: Int
let b: Int
}

要做到这一点:

struct example {
if (condition) {
let a: Int
} else {
let b: Int
}
}

这是不可能的,因为如果你这样做了,这段代码会做什么:

let e = exampleReturningFunction()
print(e.a)

如果condition是假的,应该崩溃吗?a应该有一些默认值吗?什么价值?(如果是,只需在结构体中使用默认值。)

在大多数情况下,这里真正需要的是带有相关数据的enum:

enum Example {
case a(Int)
case b(Int)
}

如果有许多相关的属性,您可以将它们分组在一起:

struct A { ... }
struct B { ... }
enum Example {
case a(A)
case b(B)
}

最新更新