假设存在一个struct
,它有两个变量:a
和b
。
是否有可能根据条件声明两个变量中的一个而忽略另一个?
换句话说,是否可能从这个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)
}