swift開發之--可選型別說明,型別判斷 is 與型別轉換 as
阿新 • • 發佈:2020-11-05
1、可選型別
可選型別表示一個變數可能有值,也可能沒有值(nil)。
宣告的方式是 資料型別+問號
要使用一個可選型別的變數時,要在後面加感嘆號 “!”
//swift可選型別說明 var islog:Int? //宣告一個可選型別,預設值為nil if islog == nil{ print("你有多高?") }else{ print("你有\(islog!)高。") } islog = 22 //給可選型別賦值
2、型別判斷 is 與型別轉換 as
//基類,動物 class Animal{ } //狗類 class Dog: Animal { } //貓類 classCat: Animal { }
2.1 使用is 來做型別的檢查(is也可以用來檢查某個類是否遵循了某個協議)
let dog = Dog() let cat = Cat() var arr = [dog,cat] for animal in arr { if animal is Dog { print("這是個狗") }else if animal is Cat{ print("這個是貓") } }
2.2 用as來做型別的轉換(如果不確定型別轉換能否成功,可以在as後面加問號“?”)
let dog = Dog()
let cat = Cat()
var arr = [dog,cat]
for animal in arr { if let m = animal as? Dog { print("這個是狗") }else if let w = animal as? Cat{ print("這個是貓") } }
3、AnyObject與Any的區別
3.1 AnyObject:代表任何class型別的物件例項
class Dog{ } class Cat{ } let dog = Dog() let cat = Cat() var animals:[AnyObject] = [dog,cat] for animal inanimals { if let m = animal as? Dog { print("這是個狗") }else if let w = animal as? Cat{ print("這是個貓") } }
3.2 Any:範圍更廣,代表處函式外任何型別的例項
class Dog{ } class Cat{ } var arrs:[Any] = [Any]() arrs.append(1) arrs.append("hero11223.com") arrs.append(Dog()) arrs.append(Cat()) for any in arrs{ switch any { case let any as Int: print("這是個Int型別") case let any as String: print("這是個String型別") case let any as Dog: print("這是個狗型別") case let any as Cat: print("這是個女人型別") default: print("這是個是貓型別") } }