iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 26
0

類別與結構的比較:

比較 類別 (class) 結構 (struct)
屬性
方法
屬性
建構器
成員逐一建構器
繼承
解構器
型別轉換
class 類別名 {
    //類別裡的屬性、方法
}
struct 結構名 {
    //結構裡的屬性、方法
}

裡面的常數或是變數為屬性; 而裡面的函式則為方法。

在類別或結構中宣告屬性可以視為給它一個預設的規格,接下來要用就需要先生成實體,接著就能取到預設的屬性。

struct royalStatus { 
    var level = 0   
}
class princess {
    var age = 17
    var name = "Arya Stark"
}
var newPrincess = princess() //生成實體
print("Her name is \(newPrincess.name) and she's \(newPrincess.age)-year-old") //取得屬性

https://ithelp.ithome.com.tw/upload/images/20180116/20107699dxm0Trfi8M.png

或是將新的值派給實體中的屬性

newPrincess.name = "Sansa Stark"
//印出新值 Her name is Sansa Stark
print("Her name is \(newPrincess.name)")  

成員逐一建構器( memberwise initializer ):

利用前面定義的結構生成新的實體

類別實體沒有這個功能

let newStatus = royalStatus(level: 1)
print(newStatus.level) //印出 1

值型別和參考型別:

比較 結構 列舉 類別
值型別
參考型別

值型別在被指派或傳遞後,實際上是做一個 copy 的動作,若做了更改的動作,則新舊兩個值不互相影響; 反之,參考型別因為是存記憶體空間中配置的位置,因此它動到的是實體本身。


上一篇
Day 25 - Swift 型別轉換
下一篇
Day 27 - Instagram 登入畫面版型檢視
系列文
Swift 新手上路之30天復刻版型30

尚未有邦友留言

立即登入留言