Swift类型选择(Type Casting)
发布时间:2020-12-14 01:41:02 所属栏目:百科 来源:网络整理
导读:在Swift开发过程中,我们会遇到以下情况:判断某个实例是那个类生成的;将子类转换为父类;想让一个变量可以为任何类型(值对象、引用对象、方法)。。。 Swift也能处理这些情况,需要使用的关键字:类型判断is、类型转换as、属性声明AnyObject和Any。 在介
在Swift开发过程中,我们会遇到以下情况:判断某个实例是那个类生成的;将子类转换为父类;想让一个变量可以为任何类型(值对象、引用对象、方法)。。。 Swift也能处理这些情况,需要使用的关键字:类型判断is、类型转换as、属性声明AnyObject和Any。 在介绍这四个关键字的使用前,先构建类MediaItem、Movie和Song。 class MediaItem {
}
class Movie: MediaItem {
}
class Song: MediaItem {
}
其中Movie和Song都继承MediaItem。 Isis主要用于类型判断,如我们判断某个实例是那个类的子类,或是那个类生成的。 let array = [Song(),Movie()]
// is测试,类型判断
for item in array {
if item is Movie {
print("Movie构建")
} else if item is Song {
print("Song构建")
}
}
Asas主要用于类型转换,可将一个类转换为另一个类。as后可以跟’?’或’!’。
for item in array {
if let movie = item as? Movie {
print("可转换为Movie: '(movie)'")
} else if let song = item as? Song {
print("可转换为Song: '(song)'")
}
// 强转换,失败时,程序崩溃
let movie = item as! Movie
}
AnyObject使用AnyObject声明的常量(变量)可以是值对象或引用对象。 let someObjects: [AnyObject] = [Movie(),1,"33"]
AnyAny和AnyObject具有相同的特性,只是Any还可以代表方法和闭包。 var things = [Any]()
things.append(0) // 值类型
things.append(Movie()) // 引用类型
things.append({ (name: String) -> String in "Hello,(name)" }) // 闭包
其他参考资料The Swift Programming Language (Swift 2.1) 文档修改记录
版权所有:http://blog.csdn.net/y550918116j (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |