Swift4.0複習類型定義、類型投射等操做

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. 
相關文章
相關標籤/搜索