swift學(xué)習(xí)之類(lèi)和結(jié)構(gòu)體(class struct、enum)

class struct enum
enum
枚舉是為一組有限種可能性的相關(guān)值提供的通用類(lèi)型,關(guān)鍵詞enum來(lái)定義枚舉,在一對(duì)大括號(hào)內(nèi)定義具體內(nèi)容包括使用case關(guān)鍵字列舉成員
枚舉中有兩個(gè)概念:原始值(raw value)、關(guān)聯(lián)值(associated value),
1.枚舉的原始值
枚舉成員可以用相同類(lèi)型的默認(rèn)值預(yù)先填充,這樣的值就是原始值(raw value),Int修飾的是FruitType成員原始值的類(lèi)型而不是FruitType的類(lèi)型

enum FruitType: Int{
    case apple = 10
    case orange = 11
    case banana = 15
}

可以使用枚舉成員的rawValue屬性來(lái)訪問(wèn)成員的原始值,或者是使用原始值初始化器來(lái)嘗試創(chuàng)建一個(gè)枚舉實(shí)例
2.枚舉的關(guān)聯(lián)值(associated value)
關(guān)聯(lián)值是為枚舉的成員們綁定了一組類(lèi)型,不同的成員可以是不同的類(lèi)型(提供關(guān)聯(lián)值時(shí)用的是括號(hào))

enum FruitType{
    case apple (String)
    case orange (Int,String)
    case banana (Int,String)
}
var apple = FruitType.apple("app")
var orange = FruitType.orange(5, "org")
var banana = FruitType.banana(10, "ban")
switch banana {
case .apple(let value):
    print(value)
case .banana(let num,let name):
    print("\(name) has \(num)")
default:
    print("default")
}
let apple = FruitType. apple.rawValue
print(apple)//10
let orange = FruitType.init(rawValue: 11)
print(orange!)//orange
let ban = FruitType.init(rawValue: 16)
if ban == nil{
    print("nil")
}

枚舉、結(jié)構(gòu)體、類(lèi)的共同點(diǎn):
1,定義屬性和方法;
2,下標(biāo)語(yǔ)法訪問(wèn)值;
3,初始化器;
4,支持?jǐn)U展增加功能;
5,可以遵循協(xié)議;
二.不同點(diǎn)
類(lèi)具有結(jié)構(gòu)體不具有的功能如下:
類(lèi)特有的功能:
1,繼承;
2,允許類(lèi)型轉(zhuǎn)換;
3,析構(gòu)方法釋放資源;
4,引用計(jì)數(shù);
類(lèi)和結(jié)構(gòu)體區(qū)別
1.定義結(jié)構(gòu)體類(lèi)型時(shí)其成員可以沒(méi)有初始值。定義一個(gè)類(lèi)沒(méi)有初始值,編譯器是會(huì)報(bào)錯(cuò)的,他會(huì)提醒這個(gè)類(lèi)沒(méi)有被初始化。
2.定義結(jié)構(gòu)體類(lèi)型時(shí)其成員可以沒(méi)有初始值,但是創(chuàng)建結(jié)構(gòu)體實(shí)例時(shí)該實(shí)例的成員必須有初值。
3.在結(jié)構(gòu)體內(nèi)部方法中如果修改了結(jié)構(gòu)體的成員,那么該方法之前應(yīng)該加入:mutating關(guān)鍵字,結(jié)構(gòu)傳遞 是作為值傳遞 ,所以要inout處理
4.class是引用類(lèi)型 strcut 是值類(lèi)型

struct Student {
    var chinese: Int = 50
    var math: Int = 50
    var english: Int = 50
   //修改數(shù)學(xué)成績(jī)
    mutating func changeMath(num: Int) {
        self.math += num
    }
  }
 var student = Student(chinese: 20, math: 30, english: 40)
//更改結(jié)構(gòu)體屬性值
//方法1
//更改分?jǐn)?shù)中語(yǔ)文學(xué)科的成績(jī)
func changeChinese(num: Int, student: inout Student){
    student.chinese += num
}
changeChinese(num: 20, student: &student)
print(student.chinese,student.math)
//方法2
student.changeMath(num: 10)

class是引用類(lèi)型 strcut 是值類(lèi)型

struct SRect {
    var width = 100
    var height = 100
}
class CRect {
    var width = 100
    var height = 100
}

var sRect = SRect(width: 150, height: 150)
print("struct===\(sRect.width)==\(sRect.height)")
var cRect = CRect()
print("class===\(cRect.width)==\(cRect.height)")

var newSrect = sRect
print(newSrect.width,newSrect.height)
newSrect.width = 200
newSrect.height = 200

print("struct是值類(lèi)型")
print("newSrect===\(newSrect.width)==\(newSrect.height)")
print("srect===\(sRect.width)==\(sRect.height)")

var newCRect = cRect
newCRect.width = 300
newCRect.height = 300
print("class是引用類(lèi)型")
print("newCRect===\(newCRect.width)==\(newCRect.height)")
print("crect===\(cRect.width)==\(cRect.height)")

輸出結(jié)果:

struct===150==150
class===100==100
150 150
struct是值類(lèi)型
newSrect===200==200
srect===150==150
class是引用類(lèi)型
newCRect===300==300
crect===300==300
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評(píng)論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,489評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,290評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,776評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,510評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,866評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,036評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,585評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,331評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,536評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,754評(píng)論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,154評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,469評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,273評(píng)論 3 399
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,505評(píng)論 2 379

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

  • 由于在開(kāi)發(fā)過(guò)程中常常需要用到系統(tǒng)提供的基礎(chǔ)類(lèi)型之外的的類(lèi)型,所以Swift允許我們根據(jù)自己的需要構(gòu)建屬于自己的類(lèi)型...
    清風(fēng)沐沐閱讀 372評(píng)論 0 1
  • enum:Swift中的枚舉是為一組有限種可能性的相關(guān)值提供的通用類(lèi)型(在C/C++/C#中,枚舉是一個(gè)被命名的整...
    雨燕oc閱讀 351評(píng)論 0 0
  • 前言 由于在開(kāi)發(fā)過(guò)程中常常需要用到系統(tǒng)提供的基礎(chǔ)類(lèi)型之外的的類(lèi)型,所以Swift允許我們根據(jù)自己的需要構(gòu)建屬于自己...
    心淡然如水閱讀 466評(píng)論 0 1
  • 官方文檔 初始化 Initialization是為準(zhǔn)備使用類(lèi),結(jié)構(gòu)體或者枚舉實(shí)例的一個(gè)過(guò)程。這個(gè)過(guò)程涉及了在實(shí)例里...
    hrscy閱讀 1,146評(píng)論 0 1
  • 【執(zhí)子之手】2017年11月26日 璨璨+Tina 小小書(shū)語(yǔ)者 Day20 1、上午和晚上各擺了一次百數(shù)方格1-5...
    cancan媽閱讀 79評(píng)論 0 0