Nik*_*kin 7 casting optional swift
假设我有一段这样的代码:
let x: Int? = 10
let y: Any = x
Run Code Online (Sandbox Code Playgroud)
现在我想把y转换成Int?:
let z = y as Int? // Error: Cannot downcast from 'Any' to a more optional type 'Int?'
Run Code Online (Sandbox Code Playgroud)
这是不可能还是有另一种方式?
对于Swift 2.0,您可以使用以下内容:
let x: Int? = 10
let y: Any = x
let z = Mirror(reflecting: y).descendant("Some") as? Int
Run Code Online (Sandbox Code Playgroud)
或者作为一个功能:
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)
Run Code Online (Sandbox Code Playgroud)
或者你可以这样做,如果你不喜欢反射:
func castToOptional<T>(x: Any) -> T {
return x as! T
}
let x: Int? = 10
let y: Any = x
let z: Int? = castToOptional(y)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |