Swift基礎(chǔ)語(yǔ)法-結(jié)構(gòu)體,結(jié)構(gòu)體構(gòu)造器,定義成員方法


1. 基本概念

  • 結(jié)構(gòu)體是用于封裝不同或相同類(lèi)型的數(shù)據(jù)的
  • Swift中的結(jié)構(gòu)體是一類(lèi)類(lèi)型, 可以定義屬性和方法(甚至構(gòu)造方法和析構(gòu)方法等)
  • 格式:
struct 結(jié)構(gòu)體名稱(chēng) {
    結(jié)構(gòu)體屬性和方法
}
struct Rect {
    var width:Double = 0.0
    var height:Double = 0.0
}
  • 如果結(jié)構(gòu)體的屬性有默認(rèn)值, 可以直接使用()構(gòu)造一個(gè)結(jié)構(gòu)體
  • 如果結(jié)構(gòu)體的屬性沒(méi)有默認(rèn)值, 必須使用逐一構(gòu)造器實(shí)例化結(jié)構(gòu)體
var r = Rect()
print("width = \(r.width) height = \(r.height)")
//輸出結(jié)果: width = 0.0 height = 0.0
  • 結(jié)構(gòu)體屬性的訪(fǎng)問(wèn)使用點(diǎn).語(yǔ)法
var r1 = Rect()
r1.width = 100
r1.height = 99
print("width = \(r1.width) height = \(r1.height)")
//輸出結(jié)果: width = 100.0 height = 99.0

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

  • Swift中的結(jié)構(gòu)體和類(lèi)跟其它面向?qū)ο笳Z(yǔ)言一樣都有構(gòu)造函數(shù), 而OC是沒(méi)有的
  • Swift要求實(shí)例化一個(gè)結(jié)構(gòu)體或類(lèi)的時(shí)候,所有的成員變量都必須有初始值,
  • 構(gòu)造函數(shù)的意義就是用于初始化所有成員變量的, 而不是分配內(nèi)存, 分配內(nèi)存是系統(tǒng)幫我們做的.
  • 如果結(jié)構(gòu)體中的所有屬性都有默認(rèn)值, 可以調(diào)用()構(gòu)造一個(gè)結(jié)構(gòu)體實(shí)例
  • 如果結(jié)構(gòu)體中的屬性沒(méi)有默認(rèn)值, 可以自定義構(gòu)造器, 并在構(gòu)造器中給所有的屬性賦值
  • 其實(shí)結(jié)構(gòu)體有一個(gè)默認(rèn)的逐一構(gòu)造器, 用于在初始化時(shí)給所有屬性賦值
struct Rect2 {
    var width:Double
    var height:Double = 0.0
}
//逐一構(gòu)造器
var r2 = Rect2(width: 10.0, height: 10.0);
//錯(cuò)誤寫(xiě)法, 順序必須和結(jié)構(gòu)體中成員的順序一致
var r2 = Rect2(height: 10.0, width: 10.0);
//錯(cuò)誤寫(xiě)法, 必須包含所有成員
var r2 = Rect2(height: 10.0);

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

  • 在C和OC中結(jié)構(gòu)體只有屬性, 而Swift中結(jié)構(gòu)體中還可以定義方法
  • 給結(jié)構(gòu)體定義一個(gè)方法, 該方法屬于該結(jié)構(gòu)體
  • 結(jié)構(gòu)體中的成員方法必須使用某個(gè)實(shí)例調(diào)用
  • 成員方法可以訪(fǎng)問(wèn)成員屬性
  • 結(jié)構(gòu)體中的成員方法是和某個(gè)實(shí)例對(duì)象綁定在一起的,
  • 所以誰(shuí)調(diào)用, 方法中訪(fǎng)問(wèn)的屬性就屬于誰(shuí)
struct Rect3 {
    var width:Double
    var height:Double = 0.0
    func getWidth() -> Double{
        return width
    }
}

var r3 = Rect3(width: 10.0, height: 20.0)
print(r3.getWidth())
//輸出結(jié)果: 10.0
var r4 = Rect3(width: 30.0, height: 20.0)
print(r4.getWidth())
//輸出結(jié)果: 30.0

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

  • 結(jié)構(gòu)體是值類(lèi)型, 結(jié)構(gòu)體之間的賦值其實(shí)是將r1中的值完全拷貝一份到r2中,
  • 所以他們是兩個(gè)不同的實(shí)例
struct Rect4 {
    var width:Double
    var height:Double = 0.0
    func show() -> Void{
        print("width = \(width) height = \(height)")
    }
}

var r5 = Rect4(width: 10.0, height: 10.0)
var r6 = r5
r5.show()
r6.show()
r5.width = 20.0
r5.show()
r6.show()
//輸出結(jié)果:
//width = 10.0 height = 10.0
//width = 10.0 height = 10.0
//width = 20.0 height = 10.0
//width = 10.0 height = 10.0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末充岛,一起剝皮案震驚了整個(gè)濱河市囤捻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖爆安,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異说订,居然都是意外死亡桅狠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)趴荸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)儒溉,“玉大人,你說(shuō)我怎么就攤上這事发钝《倩粒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵酝豪,是天一觀的道長(zhǎng)涛碑。 經(jīng)常有香客問(wèn)我,道長(zhǎng)孵淘,這世上最難降的妖魔是什么蒲障? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上揉阎,老公的妹妹穿的比我還像新娘庄撮。我一直安慰自己,他們只是感情好毙籽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布洞斯。 她就那樣靜靜地躺著,像睡著了一般坑赡。 火紅的嫁衣襯著肌膚如雪烙如。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天垮衷,我揣著相機(jī)與錄音厅翔,去河邊找鬼乖坠。 笑死搀突,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熊泵。 我是一名探鬼主播仰迁,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼顽分!你這毒婦竟也來(lái)了徐许?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卒蘸,失蹤者是張志新(化名)和其女友劉穎雌隅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體缸沃,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恰起,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趾牧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片检盼。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖翘单,靈堂內(nèi)的尸體忽然破棺而出吨枉,到底是詐尸還是另有隱情,我是刑警寧澤哄芜,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布貌亭,位于F島的核電站,受9級(jí)特大地震影響认臊,放射性物質(zhì)發(fā)生泄漏属提。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冤议。 院中可真熱鬧斟薇,春花似錦、人聲如沸恕酸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蕊温。三九已至袱箱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間义矛,已是汗流浹背发笔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凉翻,地道東北人了讨。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像制轰,于是被迫代替她去往敵國(guó)和親前计。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容