結(jié)構(gòu)體的介紹
概念介紹
結(jié)構(gòu)體(struct)是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合
結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu)
結(jié)構(gòu)體是值類型,在方法中傳遞時(shí)是值傳遞
結(jié)構(gòu)的定義格式
struct 結(jié)構(gòu)體名稱 {
// 屬性和方法
}
結(jié)構(gòu)體的增強(qiáng)
擴(kuò)充構(gòu)造函數(shù)
默認(rèn)情況下創(chuàng)建Location時(shí)使用Location(x: x值, y: y值)
但是為了讓我們?cè)谑褂媒Y(jié)構(gòu)體時(shí)更加的靈活,swift還可以對(duì)構(gòu)造函數(shù)進(jìn)行擴(kuò)充
擴(kuò)充的注意點(diǎn)
在擴(kuò)充的構(gòu)造函數(shù)中必須保證成員變量是有值的
擴(kuò)充的構(gòu)造函數(shù)會(huì)覆蓋原有的構(gòu)造函數(shù)
struct Location {
var x : Double
var y : Double
init(x : Double, y : Double) {
self.x = x
self.y = y
}
init(xyString : String) {
let strs = xyString.components(separatedBy: ",")
x = Double(strs.first!)!
y = Double(strs.last!)!
}
}
let location = Location(x: 100, y: 100)
let location1 = Location(xyString: "101,101")
為結(jié)構(gòu)體擴(kuò)充方法
為了讓結(jié)構(gòu)體使用更加靈活,swift的結(jié)構(gòu)體中可以擴(kuò)充方法
例子:為L(zhǎng)ocation結(jié)構(gòu)體擴(kuò)充兩個(gè)方法
向水平方向移動(dòng)的方法
向垂直方向移動(dòng)的方法
struct Location {
var x : Double
var y : Double
init(x : Double, y : Double) {
self.x = x
self.y = y
}
init(xyString : String) {
let strs = xyString.components(separatedBy: ",")
x = Double(strs.first!)!
y = Double(strs.last!)!
}
mutating func moveH(x : Double) {
self.x += x
}
mutating func moveV(y : Double) {
self.y += y
}
}
var location = Location(x: 100, y: 100)
print(location) // Location(x: 100.0, y: 100.0)
location.moveH(x: 30)
location.moveV(y: -10)
print(location) // Location(x: 130.0, y: 90.0)
注意:
如果我們使用的 Location 不是自己定義的咕幻,但是我們?nèi)耘f希望在自己的項(xiàng)目里擴(kuò)展 Location 的操作
Swift 也能幫我們達(dá)成粟按,這個(gè)機(jī)制,叫做 extension
extension Location {
mutating func moveH(x : Double) {
self.x += x
}
mutating func moveV(y : Double) {
self.y += y
}
}
最后編輯于 :2017.12.08 05:46:48
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者