麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Swift > 正文

Swift中的類class與結構體struct體學習筆記

2020-03-09 17:48:17
字體:
來源:轉載
供稿:網友

一、引言
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.不需要通過集成另一個數據類型而來。

除了上面列舉的一些情況,其它情況下,都推薦開發者使用類來描述數據,這也是開發中最后常用的手段。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国语自产免费精品视频在 | 精品国产乱码久久久久久久 | 亚洲小视频在线播放 | 精品久久久久久亚洲精品 | 精品三级内地国产在线观看 | 国产乱淫av片免费 | 色妞欧美 | 热久久成人 | 日韩在线播放第一页 | 4p嗯啊巨肉寝室调教男男视频 | 天天鲁在线视频免费观看 | 亚洲片在线 | 欧美亚洲国产日韩 | 少妇一级淫片高潮流水电影 | 国产成人午夜高潮毛片 | 亚洲精品久久久久久久久久久 | 久久精品国产一区二区电影 | a免费视频| 国产精品自拍av | 亚洲成人福利电影 | 久久精品1区2区 | 国产精品久久久久影院老司 | 国产精品嘿咻嘿咻在线播放 | 精品国产一区二区三区四 | 法国性xxx精品hd专区 | 国产一区二区三区撒尿在线 | 91精品视频网址 | 中国成人在线视频 | 免费观看9x视频网站在线观看 | 91成人免费在线观看 | 视频一区二区三区在线 | 日本免费中文字幕 | 日本不卡一区二区在线观看 | 91精品国产乱码久 | 日本高清一级片 | 久久成人精品视频 | 国产精品欧美久久久久一区二区 | 在线观看免费污视频 | 国产亚洲在 | 久草手机在线视频 | 羞羞电影在线观看 |