1.類型定義:編程
/// 這裏將MyInt定義爲Int32類型 typealias MyInt = Int32 /// 這裏將MyArrayInt定義爲[MyInt]數組類型 typealias MyArrayInt = [MyInt]
2.元類型:數組
「元類型(metatype)是指可引用某個類型的類型對象的類型。」 摘錄來自: 「大話Swift 4.0」。 iBooks.
let a = 10.self // 輸出:a = 10 print("a = \(a)") let tuple = (10, 0.5, "abc").self // 輸出:tupe = (10, 0.5, "abc") print("tupe = \(tuple)") func foo() { print("Foo...") } // 這裏直接輸出:Foo... foo.self()
3.類型獲取:安全
let mc: Prot = MyClass() // 這裏經過type(of:)函數來獲取mc對象的元類型實體, // type(of: mc)所返回的類型就是MyClass.Type typeFetch(t: type(of: mc))
4.Any和AnyObject:編程語言
「Swift編程語言中提供了兩個根類型,
一個是 Any,它可用於指向Swift中的任一類型,
包括函數類型與元組類型;
還有一個是 AnyObject,它實際上是一個協議類型,用於指向Swift中的任一類類型的對象引用。
引入 AnyObject 的主要目的仍是爲了能與Objective-C進行方便對接。」 摘錄來自: 「大話Swift 4.0」。 iBooks.
struct MyStruct { } class MyClass { } func foo() { } // 聲明Any類型的對象obj var obj: Any // obj指向MyStruct結構體的對象實例 obj = MyStruct() // obj指向MyClass類的對象實例 obj = MyClass() // obj指向一個(Int, Double, String)元組對象 obj = (1, 2.0, "abc") print("obj = \(obj)") // obj指向函數foo的引用 obj = foo // 這裏定義了AnyObject類型的對象引用cls // 並將它指向MyClass對象實例 let cls: AnyObject = MyClass()
5.類型投射:函數
「在Swift編程語言中提供了兩種類型投射操做符,分別爲 as! 與 as?。
因爲向下投影操做可能會失敗,因此通常狀況下咱們能夠使用 as? 進行操做,它返回一個Optional對象,
若是投射失敗,則會返回空值 nil。
若是咱們能確保當前對象能被安全投射到咱們所指定的類型,那麼能夠使用 as!。
該操做符直接返回類型投射以後的對象,不過若是萬一投射失敗,則運行時就會發生異常崩潰。」 摘錄來自: 「大話Swift 4.0」。 iBooks.
6.類型檢查:spa
if obj is Child { print("This is Child") }
7.嵌套類型:code
「嵌套類型中可訪問外部類型中的私有成員,但外部類型則不可訪問其嵌套類型的私有成員。」 摘錄來自: 「大話Swift 4.0」。 iBooks.