我只是想知道…
let movie = item as? Movie
Run Code Online (Sandbox Code Playgroud)
在这个例子中item是类型Movie或其他类型.如果后者movie将被赋予零值.因此movie将是类型Movie?.
现在看看下一个例子:
let movie: Movie?
movie = item as? Movie
Run Code Online (Sandbox Code Playgroud)
假设movie是一个类变量,我在其中一个类方法中赋予了一些值.
对我来说,感觉as? Movie有些多余,因为movie已经知道它是类型的Movie?.
Swift中是否有任何语法说:"将此对象向下转换为与我分配给它的对象相同的类型.如果这是一个可选类型并且向下转换失败,则分配nil."?
我希望有类似的东西:
movie = item as?
Run Code Online (Sandbox Code Playgroud)
要么
movie =? movie
Run Code Online (Sandbox Code Playgroud)
现有的答案正确地表明没有内置的功能。但只是为了在此处已编写的内容的基础上进行构建,可以定义一个中缀运算符=?来实现您在问题中描述的行为。例如:
infix operator =? {
associativity none
precedence 130
}
func =? <T>(inout lhs: T?, rhs: Any?) {
lhs = rhs as? T
}
var movie: Movie?
let item: Any? = Movie(name: "some movie")
movie =? item
movie?.name // "some movie"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |