swift基礎(chǔ)-10-struct結(jié)構(gòu)體

結(jié)構(gòu)體:
結(jié)構(gòu)體是用于封裝不同或相同類型的數(shù)據(jù)的, Swift中的結(jié)構(gòu)體是一類類型, 可以定義屬性和方法(甚至構(gòu)造方法和析構(gòu)方法等)
格式:

struct 結(jié)構(gòu)體名稱 {
    結(jié)構(gòu)體屬性和方法
}
struct Rect {
    var width:Double = 0.0
    var height:Double = 0.0
}
// 如果結(jié)構(gòu)體的屬性有默認(rèn)值, 可以直接使用()構(gòu)造一個結(jié)構(gòu)體
// 如果結(jié)構(gòu)體的屬性沒有默認(rèn)值, 必須使用逐一構(gòu)造器實例化結(jié)構(gòu)體
var r = Rect()//Rect
print("width = \(r.width) height = \(r.height)")//"width = 0.0 height = 0.0\n"
// 結(jié)構(gòu)體屬性的訪問使用.語法
r.width = 100//Rect
r.height = 99//Rect
print("width = \(r.width) height = \(r.height)")//"width = 100.0 height = 99.0\n"

結(jié)構(gòu)體構(gòu)造器
Swift中的結(jié)構(gòu)體和類跟其它面向?qū)ο笳Z言一樣都有構(gòu)造函數(shù), 而OC是沒有的
Swift要求實例化一個結(jié)構(gòu)體或類的時候,所有的成員變量都必須有初始值, 構(gòu)造函數(shù)的意義就是用于初始化所有成員變量的, 而不是分配內(nèi)存, 分配內(nèi)存是系統(tǒng)幫我們做的.
如果結(jié)構(gòu)體中的所有屬性都有默認(rèn)值, 可以調(diào)用()構(gòu)造一個結(jié)構(gòu)體實例
如果結(jié)構(gòu)體中的屬性沒有默認(rèn)值, 可以自定義構(gòu)造器, 并在構(gòu)造器中給所有的屬性賦值
其實結(jié)構(gòu)體有一個默認(rèn)的逐一構(gòu)造器, 用于在初始化時給所有屬性賦值

struct Rect2 {
    var width:Double
    var height:Double = 0.0
}
// 逐一構(gòu)造器
var r1 = Rect2(width: 10.0, height: 10.0);//Rect2

錯誤寫法:

// 錯誤寫法, 順序必須和結(jié)構(gòu)體中成員的順序一致
var r1 = Rect2(height: 10.0, width: 10.0); // error : Argument 'width' must precede argument 'height'
// 錯誤寫法, 必須包含所有成員
var r1 = Rect2(height: 10.0); // error : Missing argument for paremeter 'width' in call 

結(jié)構(gòu)體中定義成員方法
在C和OC中結(jié)構(gòu)體只有屬性, 而Swift中結(jié)構(gòu)體中還可以定義方法

struct Rect3 {
    var width:Double
    var height:Double = 0.0
    // 給結(jié)構(gòu)體定義一個方法, 該方法屬于該結(jié)構(gòu)體
    // 結(jié)構(gòu)體中的成員方法必須使用某個實例調(diào)用
    // 成員方法可以訪問成員屬性
    func getWidth() -> Double{
        return width
    }
}
var r2 = Rect3(width: 10.0, height: 20.0)//Rect3
// 結(jié)構(gòu)體中的成員方法是和某個實例對象綁定在一起的, 所以誰調(diào)用, 方法中訪問的屬性就屬于誰
print(r2.getWidth())//"10.0\n"
var r3 = Rect3(width: 30.0, height: 20.0)//Rect3
// 取得r2這個對象的寬度
print(r3.getWidth())//"30.0\n"
  • 結(jié)構(gòu)體是值類型
struct Rect4 {
    var width:Double
    var height:Double = 0.0
    func show() -> Void{
        print("width = \(width) height = \(height)")
    }
}
var r4 = Rect4(width: 10.0, height: 10.0) //Rect4
var r5 = r4 //Rect4 

賦值有兩種情況
1.指向同一塊存儲空間
2.兩個不同實例, 但內(nèi)容相同
結(jié)構(gòu)體是值類型, 結(jié)構(gòu)體之間的賦值其實是將r1中的值完全拷貝一份到r2中, 所以他們是兩個不同的實例

r4.show() //Rect4
r5.show() //Rect4
r4.width = 20.0 //Rect4
// 結(jié)構(gòu)體是值類型, 結(jié)構(gòu)體之間的賦值其實是將r1中的值完全拷貝一份到r2中, 所以他們是兩個不同的實例
print(r4.width) //"20.0\n"
print(r5.width) //"10.0\n"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末想诅,一起剝皮案震驚了整個濱河市园爷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纳击,居然都是意外死亡,警方通過查閱死者的電腦和手機攻臀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門焕数,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刨啸,你說我怎么就攤上這事堡赔。” “怎么了设联?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵善已,是天一觀的道長。 經(jīng)常有香客問我离例,道長换团,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任宫蛆,我火速辦了婚禮艘包,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耀盗。我一直安慰自己想虎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布叛拷。 她就那樣靜靜地躺著舌厨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胡诗。 梳的紋絲不亂的頭發(fā)上邓线,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音煌恢,去河邊找鬼骇陈。 笑死,一個胖子當(dāng)著我的面吹牛瑰抵,可吹牛的內(nèi)容都是我干的你雌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼二汛,長吁一口氣:“原來是場噩夢啊……” “哼婿崭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肴颊,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤氓栈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后婿着,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體授瘦,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年竟宋,在試婚紗的時候發(fā)現(xiàn)自己被綠了提完。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丘侠,死狀恐怖徒欣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜗字,我是刑警寧澤打肝,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站挪捕,受9級特大地震影響闯睹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜担神,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一楼吃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妄讯,春花似錦孩锡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至炕置,卻和暖如春荣挨,著一層夾襖步出監(jiān)牢的瞬間男韧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工默垄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留此虑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親域庇。 傳聞我的和親對象是個殘疾皇子铸题,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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