点击查看源码git
//类型选择 func test() { class MediaItem { } class Movie: MediaItem { } class Song: MediaItem { } let array = [Song(), Movie()] //is测试 类型判断 for item in array { if item is Movie { print("Movie构建") } else if item is Song { print("Song构建") } } //as测试 类型转换 for item in array { if let movie = item as? Movie { print("可转换为Movie: '\(movie)'") } else if let song = item as? Song { print("可转换为Song: '\(song)'") } } //AnyObject能够是任何类型的一个实例 值类型或引用类型 let someObjects: [AnyObject] = [Movie(), 1 as AnyObject, "33" as AnyObject] print(someObjects) //Any任何类型数据 还能够是函数 闭包等 var things = [Any]() things.append(0) //值类型 things.append(Movie()) //引用类型 things.append({ (name: String) -> String in "Hello, \(name)" }) // 闭包 }