Swift 七:結(jié)構(gòu)體和類

1).結(jié)構(gòu)體定義和結(jié)構(gòu)體成員訪問

定義語法:

結(jié)構(gòu)體類型 結(jié)構(gòu)體名 {

?? 成員屬性類型 屬性名 : 屬性類型

??? ...

}

例子:

struct Rect {

var width : Double

var height : Double

}

成員變量調(diào)用例子:

struct Rect {

?????? var width : Double = 10

?????? var height : Double = 10

}

var rect1 = Rect();

rect1.width = 11;


2).結(jié)構(gòu)體構(gòu)造器

struct Rect {

? ? var width : Double

??? var height : Double

}

var rect1 = Rect(width: 10, height: 10)?

//結(jié)構(gòu)體逐一成員構(gòu)造器

//在沒有額外聲明初始化方法時(shí),swift會(huì)默認(rèn)提供這個(gè)方法初始化,swift要求結(jié)構(gòu)體或者類的成員變量,在初始化時(shí)給定初值


3).結(jié)構(gòu)體中定義成員方法

struct Rect {

????? var width : Double

????? var height : Double

???? func getWidth() -> Double {

???????? return width? //? return self.width?? //成員方法可以訪問成員屬性

???? }

}

var rect1 = Rect(width: 10, height: 10)

rect1.getWidth()? //成員方法依賴于對(duì)象


4).結(jié)構(gòu)體是值類型

struct Rect {

? ? var width : Double = 19

? ? var height : Double = 10

}

var rect1 = Rect()

var rect2 = rect1

rect1.width = 100

print(rect2.width)??? //rect2的值沒有改變

可以看出? rect1跟rect2是兩個(gè)不同的實(shí)例,但是內(nèi)容一致!并非是兩個(gè)引用,指向了同一塊內(nèi)存區(qū)域


5).類的基本定義

類的聲明跟結(jié)構(gòu)體基本一致,關(guān)鍵字改為Class即可,成員訪問也是通過“點(diǎn)語法”

但是類無逐一成員構(gòu)造器這個(gè)默認(rèn)方法

類不同于結(jié)構(gòu)體的值類型,類是引用類型!

swift中提供恒等運(yùn)算符“ ===”來判斷兩個(gè)對(duì)象是否指向同一個(gè)實(shí)例? //? “!==”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容