如何在swift中从Enum中解压元组返回值

问题描述 投票:0回答:1

我想创建一个返回元组值的枚举。当我使用时,我会执行类似

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
swift enums
1个回答
0
投票

如果您需要这两个值,那么像您所示的那样解构它们是正确的方法,并且效果很好:

let (firstName, lastName) = SomeType.type1.name
print(firstName, lastName)

如果您只需要元组成员之一,而不是两者,则可以使用点语法进行访问,使用它们的索引(不太清楚):

print(SomeType.type1.0)

或其元组成员标签,如果有的话(更清晰):

print(SomeType.type1.firstName)

虽然通常仍然使用解构更惯用,但只需使用

_
:

丢弃未使用的值
let (firstName, _) = SomeType.type1.name

print(firstName)
© www.soinside.com 2019 - 2024. All rights reserved.