我想创建一个返回元组值的枚举。当我使用时,我会执行类似
let firstName = myType.name.first
的操作来获取第一个值。但是,我可以通过什么方式解压缩枚举,这样我就不需要将第一个和最后一个放入两行代码中?
也许类似
let (firstName, lastName) = myType.name
我的代码
enum SomeType {
case type1
case type2
var name: (firstName: String, lastName: String) {
switch self {
case .type1:
return ("type1 first", "type1 last")
case .type2:
return ("type2 first", "type2 last")
}
}
}
let myType = SomeType.type1
let firstName = myType.name.first
let lastName = myType.name.last
如果您需要这两个值,那么像您所示的那样解构它们是正确的方法,并且效果很好:
let (firstName, lastName) = SomeType.type1.name
print(firstName, lastName)
如果您只需要元组成员之一,而不是两者,则可以使用点语法进行访问,使用它们的索引(不太清楚):
print(SomeType.type1.0)
或其元组成员标签,如果有的话(更清晰):
print(SomeType.type1.firstName)
虽然通常仍然使用解构更惯用,但只需使用
_
: 丢弃未使用的值
let (firstName, _) = SomeType.type1.name
print(firstName)