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 省略下標 能夠匹...