1.1類型檢查:is
var movieCount = 0
var songCount = 0
for item in library {
if item in library {
movieCount += 1
}else if item is Song {
songCount += 1
}
}
1.2向下轉型
用類型轉換符:as?或as!
as? 返回一個可選值
as!強制形式。
for item in library {
if let movie = item as? Movie {
print("Movie: '\(movie.name)', dir. \(movie.director)")
}else if let song = item as? Song {
print("Song: '\(song.name)', by \(song.artist)")
}
1.3 Any和AnyObject的類型轉換
Any:表示任何類型,包括函數類型
AnyObject:表示任何類類型
使用場景:
只有當你確實需要他們的行為和功能時才使用Any和AnyObject
var things = [Any]()
things.append(0)
things.append(0.0)
things.append(42)
things.append(3.14159)
things.append("hello")
things.append((3.0, 5.0))
things.append(Movie(name: "Ghostbusters", director: "Ivan Reitman"))
things.append({ (name: String) -> String in "Hello, \(name)" })