swift3 類class與結構體struct

2021-07-29 10:02:34 字數 2694 閱讀 9459

swift 中類和結構體有很多共同點。共同處在於:

與結構體相比,類還有如下的附加功能:

//定義類class

class 角色

}var 小黃 = 角色()

小黃.安全區角色(id: "小黃", money: 999)//當前角色是小黃,money有999

//定義結構體struct

struct 座標

}var 小黃的座標 = 座標()

小黃的座標.安全區座標1(x: 1, y: 2)//當前已回到安全區,座標是1,2

2.1 struct與struct的例項傳遞

在例項傳遞時,類是被引用的,結構體和列舉型別則是被複製的。

//重點:在例項傳遞時,類是被引用的,結構體和列舉型別則是被複製的

//1.建立類的例項

let xiaohong = 角色() //id:"",money:0

xiaohong.money //0

//2.例項傳遞

let xiaoming = xiaohong

//3.使用class

xiaoming.id = "小明"

//id:"小明",money:0

xiaoming.money = 5000

//id:"小明",money:5000

//4.改變xiaoming例項後xiaohong的值

xiaohong.money //5000,說明類是被引用的

//1.建立結構體的例項,所有結構體會預設生成乙個逐個設定屬性的構造方法 而類不會

var 小紅座標 = 座標() //x:0,y:0

小紅座標 = 座標(x:100,y:200) //x:100,y:200

小紅座標.x //100

//2.例項傳遞

var 小明座標 = 小紅座標

//3.使用struct,與類不同,必須例項是變數型別才能改變值

小明座標.x = 10

//x:10,y:0

小明座標.y = 20

//x:10,y:20

//4.改變小明座標例項後小紅座標的值

小紅座標.x //100,說明結構體是被複製的

2.2 class,struct,enum的綜合使用

例:

enum 移動方式 

class 法師: 角色

return 人物座標

}set

}}var 法師1 = 法師() //id:"",money:0;x:0,y:0;走

//更新前的法師1屬性

法師1//id:"",money:0;x:0,y:0;走

//更新當前座標,更新 初始移動方式:走 的當前座標

法師1.當前座標 //x:1,y:1

//更新後的法師1屬性

法師1//id:"",money:0;x:1,y:1;走

法師1.人物移動方式 = .跑

法師1.當前座標 //x:4,y:4

法師1.人物移動方式 = .傳送

法師1.當前座標 //x:1004,y:1004

法師1//id:"",money:0;x:1004,y:1004;傳送

//計算屬性的setter方法,影響其他屬性

法師1.當前座標 = 座標(x: 2000, y: 90)

法師1//id:"",money:0;x:2000,y:90;傳送

法師1.人物座標 //x:2000,y:90

2.3 屬性監視器: 對屬性值的變化進行響應.

willset: 事前響應. 新值 newvalue

didset : 事後響應. 舊值 oldvalue

/*

swift中基礎數學函式:

- sqrt(n)用來計算n的平方根

- pow(x, n)用來計算x的n次方

- abs(x)用來計算x的絕對值

*/class 移動距離

didset

}}var 移動距離1 = 移動距離() //當前座標

移動距離1.當前座標 = 座標(x:100,y:200)

移動距離1.當前座標 = 座標(x:200,y:250)

/* 當前座標是:座標(x: 100, y: 200)!

x軸移動了-1900公尺移動距離!

y軸移動了110公尺移動距離!

當前座標是:座標(x: 200, y: 250)!

x軸移動了100公尺移動距離!

y軸移動了50公尺移動距離!

*/

型別屬性:屬於型別固有的,例項不能呼叫.

重寫父類的屬性:重寫父類的屬性或者方法要使用關鍵字 override 進行修飾

class 生命體  

}生命體.遺傳方式 //"rna"

class human: 生命體

}human.遺傳方式 //"dna"

生命體.遺傳方式 //"rna"

let i = human() //human

i.width //0

struct 逛街

}逛街.試衣間 //"uniclo"

let 逛** = 逛街(cate: "seafood")

逛**.shareurl //""

Swift3建立陣列

陣列是由一組型別相同的元素構成的有序資料集合。陣列中的集合元素是有 序的,而且可以重複出現。在swift語言中,陣列的型別格式為 array或 elementtype 其中array中的elementtype表示陣列的型別,是泛型寫法。elementtype 是一種簡寫方式。兩者表示的功能是一樣的,...

Swift3 建立字典

字典是由兩部分內容構成的,乙個是鍵 key 乙個是值 value 字典是一種儲存多個型別相同的值的容器。每個值都和乙個唯一的鍵相對應,這個鍵在字典裡就是其對應值的唯一標識。鍵是不能有重複元素的,而值是可以重複的 鍵和值是成對出現的。跟陣列不同,字典裡的元素並沒有特定的順序。在 字典 中使用鍵來查詢其...

從零學習Swift 3

oc 風格的迴圈var sum 0 for var i 0 i 10 i print sum for in,0.10 表示從0到9 sum 0 for i in 0.10 print sum 範圍 0.10 表示從0到10 sum 0 for i in 0.10 print sum 省略下標 能夠匹...