《從零開始學Swift》學習筆記(Day 30)——選擇類仍是結構體呢?

原創文章,歡迎轉載。轉載請註明:關東昇的博客 php

 

類和結構體很是類似,不少狀況下沒有區別。若是你是設計人員在進行系統設計時候,是將某種類型設計成爲類仍是結構體? java

類和結構體異同:數組

類和結構體都有以下功能:微信

  • 定義存儲屬性函數

  • 定義方法網站

  • 定義下標spa

  • 定義構造函數.net

  • 定義擴展設計

  • 實現協議 code

    只有類纔有的功能:

  • 可以繼承另一個類

  • 可以覈對運行期對象的類型

  • 析構對象釋放資源

  • 引用計數容許一個實例有多個引用 

選擇的原則:

結構體是值類型,每個實例沒有獨一無二的標識,下面兩個數組實例本質上沒有區別,他們能夠互相替換。

var studentList1:
[String]  = ["張三","李四","王五"]
var studentList2: [String]  =
["張三","李四","王五"]

可是咱們提到類時候,它是引用類型,每一個實例都有獨一無二的標識。咱們看看下面員工Employee類代碼:

class Employee { 
    var no  = 0       
    var name = ""  
    var job = ""   
    var salary = 0.0 
}
 
var emp1  = Employee()
emp1.no = 100
emp1.name =
"Tom"
emp1.job =
"SALES"
emp1.salary = 9000
 
var emp2  = Employee()
emp2.no = 100
emp2.name =
"Tom"
emp2.job =
"SALES"
emp2.salary = 9000

emp1emp2兩個員工實例即使內容徹底相同,可是這不能說明他們就是同一個員工,只是類似而已。每個員工實例的背後都有獨一無二的標識。

咱們再來看看部門Department結構體。

struct Department {
    var no: Int = 0
    var name: String = ""
}
 
var dept1 = Department()
dept1.no = 20
dept1.name =
"Research"
 
var dept2 = Department()
dept2.no = 20
dept2.name =
"Research"

Department爲何被設計成爲結構體而不是類呢,那要看咱們對於兩個不一樣部門的理解是什麼,若是具備相同的部門編號(no)和部門名稱(name),咱們就認爲他們是兩個相同的部門,那麼就能夠把Department定義爲結構體,這一點與員工Employee不一樣。

 

歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
 

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

相關文章
相關標籤/搜索