Swift中的類class與構造體struct體進修筆記。本站提示廣大學習愛好者:(Swift中的類class與構造體struct體進修筆記)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift中的類class與構造體struct體進修筆記正文
1、引言
Swift中的類與構造體非常類似,和Objective-C分歧的事,Swift中的構造體不只可以界說屬性,也能夠像類一樣為其界說辦法。
Swift中的類與構造體有以下類似點:
1.界說屬性來存儲值。
2.界說函數來供給功效。
3.經由過程界說下口號法應用下標的方法取值。
4.界說結構辦法來對其停止初始化。
5.經由過程擴大來在原始基本上添加功效。
6.經由過程協定來界說完成尺度。
固然類和構造體也有很多分歧點,上面這些功效是類獨有的,構造體沒有:
1.經由過程繼續來創立類的子類。
2.在運轉時許可對類的實例停止類型的檢討息爭釋。
3.析構辦法可以釋放被類援用的資本。
4.經由過程援用計數許可一個類實例的多處援用。
當開辟者在代碼中傳遞這些實例時,構造體老是被賦值,而類則是被援用。這是構造體和類的最實質差別。
2、類與構造體的界說
類與構造體在界說語法上類似,示例代碼以下:
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") }
現實上,===與!==運算符比擬的是指針內容。
3、類和構造體的選擇
因為類和構造體有著分歧的傳遞機制,是以其也實用於分歧的開辟義務,上面這些情形下,官方推舉開辟者應用構造體來創立數據類型:
1.該數據類型封裝大批的簡略數據值。
2.該類型數據來傳遞時,應當被復制。
3.該類型中界說的數據類型在傳遞時也應當被賦值。
4.不須要經由過程集成另外一個數據類型而來。
除下面羅列的一些情形,其它情形下,都推舉開辟者應用類來描寫數據,這也是開辟中最初經常使用的手腕。