Swift中的類class與構造體struct體學習筆記。本站提示廣大學習愛好者:(Swift中的類class與構造體struct體學習筆記)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift中的類class與構造體struct體學習筆記正文
一、引言
Swift中的類與構造體非常類似,和Objective-C不同的事,Swift中的構造體不只可以定義屬性,也可以像類一樣為其定義辦法。
Swift中的類與構造體有如下類似點:
1.定義屬性來存儲值。
2.定義函數來提供功用。
3.經過定義下標語法運用下標的方式取值。
4.定義結構辦法來對其停止初始化。
5.經過擴展來在原始根底上添加功用。
6.經過協議來定義完成規范。
當然類和構造體也有許多不同點,上面這些功用是類獨有的,構造體沒有:
1.經過承繼來創立類的子類。
2.在運轉時允許對類的實例停止類型的反省和解釋。
3.析構辦法可以釋放被類援用的資源。
4.經過援用計數允許一個類實例的多處援用。
當開發者在代碼中傳遞這些實例時,構造體總是被賦值,而類則是被援用。這是構造體和類的最實質區別。
二、類與構造體的定義
類與構造體在定義語法上類似,示例代碼如下:
class MyClass { var name = "HS" var age = 25 } struct MyStruct { var param1:Int var param2:String } //創立類的實例 var obj1 = MyClass() //創立構造體的實例 一切構造領會默許生成一個逐一設置屬性的結構辦法 而類不會 var obj2 = MyStruct(param1: 1,param2: "1") //可以經過點語法來獲取類或許構造體中的屬性值 print(obj1.age,obj2.param1)
經過示例間的傳遞,可以證明Swift中類被援用於構造體被復制這樣的特點,示例如下:
//將類實例傳遞給另一個變量 var obj3 = obj1 //將構造體實例傳遞給另一個變量 var obj4 = obj2 //修正變臉的值 obj3.name = "NewHS" obj4.param1 = 2 //將 打印 NewHS 1 //闡明類是被援用的 構造體則被賦值 print(obj1.name,obj2.param1)
留意:在實例傳遞時異樣采用復制原理的還有枚舉類型。
由於類是經過援用來停止傳遞,Swift中還提供了一種運算符用來比擬兩個實例變量或常量能否指向同一個援用,示例如下:
if obj1===obj3{ print("same refer") }else if obj1 !== obj3 { print("not same refer") }
實踐上,===與!==運算符比擬的是指針內容。
三、類和構造體的選擇
由於類和構造體有著不同的傳遞機制,因而其也適用於不同的開發義務,上面這些狀況下,官方引薦開發者運用構造體來創立數據類型:
1.該數據類型封裝大批的復雜數據值。
2.該類型數據來傳遞時,應該被復制。
3.該類型中定義的數據類型在傳遞時也應該被賦值。
4.不需求經過集成另一個數據類型而來。
除了下面羅列的一些狀況,其它狀況下,都引薦開發者運用類來描繪數據,這也是開發中最後常用的手腕。