gpt4 book ai didi

swift - swift 中的类型转换元组

转载 作者:可可西里 更新时间:2023-11-01 02:16:11 26 4
gpt4 key购买 nike

我尝试通过元组解包和转换多个可选值,但没有成功。奇怪的是,打开单个项目是有效的。有人建议我滥用 downcast as? operator ,这很有可能,但我只是看不到。

谁能解释为什么这不起作用?

class fooba {  }

func unwrapPair(a: AnyObject?, _ b:AnyObject?) {
if let a = a as? fooba {
// true
}

if let b = b as? fooba {
// true
}

if let (a, b) = (a, b) as? (fooba, fooba) {
// false!?!?
}
}
unwrapPair(fooba(), fooba())

不认为这是 tuple "upcasting" 的副本,因为我不沮丧吗?无论如何,准确解释如何它们是重复的会很有启发性,并且本身就是一个答案。

最佳答案

与其单独尝试将每个组件与 if-let 组合匹配,不如以更快捷的方式进行相同操作:

switch (a, b) {
case (let a as String, _):
// Do whatever you need to do with a
return true
case (_, let b as String):
// Do whatever you need to do with b
return true
case (let a as NSNumber, let b as NSNumber):
// Do whatever you need to do with a and b
return false
default:
return true
}

另请注意,您尝试执行的沮丧类型目前是不可能的 - 看看这个 swift 错误:tuple 'as?' downcast broken

关于swift - swift 中的类型转换元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38426860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com