gpt4 book ai didi

swift - 是否可以将 Any 转换为 Optional?

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:44 25 4
gpt4 key购买 nike

假设我有一段这样的代码:

let x: Int? = 10  
let y: Any = x

现在我想将 y 转换为 Int?:

let z = y as Int? // Error: Cannot downcast from 'Any' to a more optional type 'Int?'

这是不可能的还是有其他方法?

最佳答案

对于 Swift 2.0,您可以使用以下内容:

let x: Int? = 10
let y: Any = x
let z = Mirror(reflecting: y).descendant("Some") as? Int

或者作为一个函数:

func castToOptional<T>(x: Any) -> T? {
return Mirror(reflecting: x).descendant("Some") as? T
}
let x: Int? = 10
let y: Any = x
let z: Int? = castToOptional(y)

或者如果你不喜欢 Reflection,你可以这样做:

func castToOptional<T>(x: Any) -> T {
return x as! T
}
let x: Int? = 10
let y: Any = x
let z: Int? = castToOptional(y)

关于swift - 是否可以将 Any 转换为 Optional?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29060818/

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