Swift中如何解构枚举返回的元组值?
问题描述
我想要创建一个返回元组值的枚举。目前我通过let firstName = myType.name.first这类方式获取第一个值,但能否直接解构该枚举的属性,无需用两行代码分别获取first和last?例如:
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
解决方案
当然可以直接解构,你示例中的写法本身就是可行的——因为name属性返回的是元组类型,Swift原生支持元组的解构赋值。
基础解构写法
直接替换原来的两行赋值代码即可:
let myType = SomeType.type1 // 一次性解构元组获取两个值 let (firstName, lastName) = myType.name
自定义变量名的解构写法
如果需要使用和元组标签不同的变量名,也可以结合标签指定:
let (firstName: givenName, lastName: familyName) = myType.name print(givenName) // 输出 "type1 first" print(familyName) // 输出 "type1 last"
本质上,你的name属性已经返回了完整的元组(无论是否带命名标签),都支持这种一次性解构的语法,无需分开获取单个元素。
内容的提问来源于stack exchange,提问作者jacobcan118
相关产品推荐
相关产品推荐

