微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 关闭元组的元组元组

我可以轻松地构建一个元组元组

let tt = (2,(3,4))

let (a,(b,c)) = tt
b // => 3

在声明闭包时我想做同样的事情,例如我以为我可以写:

[tt].map { (a,c)) in
    // Use b
}

XCode抱怨“未命名的参数必须用空名称写”.

我得到“工作”的唯一方法是:

[tt].map { (a,tuple: (b: Int,c: Int)) in
    // Use tuple.b
}

这有两个我想避免的缺点:

>我需要使用tuple.b而不是b
>我需要指定b和c的类型

顺便说一句,我的用例是我想用索引做一个reduce,所以我正在尝试使用array.enumerate().

解决方法

使用额外的赋值行,您可以将数组中的值分配给(a,c))以解构元组

let tt1 = (2,4))
let tt2 = (5,(6,7))

[tt1,tt2].map { tt in
    let (a,c)) = tt
    print(b)
}

输出

06001

或者:

[tt1,tt2].map {
    let (a,c)) = $0
    print(b)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐