DAY4:Enumerations

今天用到的Markdown語(yǔ)法:

Ordered Lists

Ordered lists are created using "1." + Space:

swift中枚舉類(lèi)型是一等類(lèi)型遏弱,具有很多傳統(tǒng)上只能被類(lèi)所支持的特性:

  1. 計(jì)算型屬性,用于提供枚舉值的附加信息
  2. 實(shí)例方法布讹,用于提供和枚舉值相關(guān)聯(lián)的功能
  3. 定義構(gòu)造函數(shù)瘾英,來(lái)提供初始值
  4. 遵守協(xié)議

我的理解:枚舉值就可以當(dāng)作類(lèi)忌堂。

定義了一個(gè)枚舉類(lèi)型,用case來(lái)定義一個(gè)枚舉成員值

enum CompassPoint {
    case North
    case South
    case East
    case West
}

當(dāng)directionToHead被賦值的時(shí)候拴曲,他的類(lèi)型就被推斷出來(lái)争舞,是枚舉類(lèi)型,下面使用的時(shí)候就可以用.South直接賦值

var directionToHead = CompassPoint.West
directionToHead = .South

用switch判斷枚舉值的時(shí)候澈灼,switch必須窮舉所有的情況竞川,不然編譯會(huì)報(bào)錯(cuò)

switch directionToHead {
case .North:
    print("Lots of planets have a north")
case .South:
    print("Watch out for penguins")
case .East:
    print("Where the sun rises")
case .West:
    print("Where the skies are blue")
    }

我們列舉枚舉值的時(shí)候,可以使用如下叁熔,將所有的選項(xiàng)寫(xiě)在一行中

enum Planet{
    case  Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune
}
let somePlanet = Planet.Mars
switch somePlanet{
//當(dāng)我們不需要列出所有選項(xiàng)的時(shí)候委乌,我們可以使用default選項(xiàng)
case .Earth:
    print("Mostly harmless")
default:
    print("hahah,woxihuanni!")
}

關(guān)聯(lián)值(Associated Values):

//定義了一個(gè)Barcode的枚舉類(lèi)型,成員值有兩個(gè)荣回,一個(gè)是枚舉成員是UPCA福澡,還有一個(gè)枚舉成員是QRCode,關(guān)聯(lián)值是枚舉成員中的關(guān)聯(lián)出來(lái)的值

enum Barcode{
    case UPCA(Int,Int,Int,Int)  
    case QRCode(String)
}
var productBarcode = Barcode.UPCA(8, 7, 5, 6)
productBarcode = .QRCode("wocalei")

枚舉值同時(shí)只能存儲(chǔ)這兩個(gè)關(guān)聯(lián)值中的一個(gè)驹马,最后被賦值的會(huì)覆蓋前面的值
可以用一個(gè)switch的語(yǔ)句來(lái)做判斷,這時(shí)候可以給每個(gè)關(guān)聯(lián)值做一個(gè)變量的定義除秀,下面就可以使用這個(gè)變量了

switch productBarcode{
case .UPCA(let wo,let da,let ge,let nihao):
    print("\\(wo),\\(da),\\(ge),\\(nihao)")
case .QRCode(var hah):
    print("\\(hah)")
}

也可以吧let(var)移到最前面糯累,寫(xiě)成這樣:

//case let .UPCA(wo,da,ge,nihao)

原始值(Raw Values):

作為關(guān)聯(lián)值的替代,枚舉成員可以使用原始值(默認(rèn)值)預(yù)填充册踩,這些原始值的類(lèi)型必須要相同的類(lèi)型

enum ACSIIControl:Character{
    case Tab = "\\t"
    case LineFeed = "\\n"http://換行
    case CarriageReturn = "\\r"http://回車(chē)
}

原始值可以是字符串泳姐,字符,活著任何整型或者浮點(diǎn)類(lèi)型暂吉,每個(gè)原始值在枚舉聲明中必須是唯一的胖秒,當(dāng)整型值被用于原始值,如果其他值沒(méi)有被賦值慕的,她們會(huì)自動(dòng)遞增

enum Planet: Int {
   case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
let earthOrader = Planet.Earth.rawValue  //earthOrader值為3
let possiblePlant = Planet(rawValue: 7)

因?yàn)椴皇撬械腎nt值都可以找到匹配的行星阎肝,這是一個(gè)構(gòu)造函數(shù),可以反回一個(gè)可選的枚舉成員肮街,所以possiblePlant是Planet风题?(可選的Planet),當(dāng)有值的時(shí)候反回可選值嫉父,沒(méi)有就反回nil

let positionTofind = 9
if let somePlanet = Planet(rawValue: positionTofind){        
switch somePlanet{
case .Earth:
     println("mostly harmless")     
default:
     println("Not a safe place for humans")
  }
}else {
     println("There isn't a planet at position \\(positionTofind)")
}

上面這個(gè)例子通過(guò)原始值來(lái)獲得一個(gè)可選的行星沛硅,如果有值救火進(jìn)入if 判斷,如果沒(méi)有就會(huì)進(jìn)入else分支绕辖,顯然上面是沒(méi)有的摇肌,打出There isn't a planet at position 9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仪际,隨后出現(xiàn)的幾起案子围小,更是在濱河造成了極大的恐慌昵骤,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吩抓,死亡現(xiàn)場(chǎng)離奇詭異涉茧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)疹娶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)伴栓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人雨饺,你說(shuō)我怎么就攤上這事钳垮。” “怎么了额港?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵饺窿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我移斩,道長(zhǎng)肚医,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任向瓷,我火速辦了婚禮肠套,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猖任。我一直安慰自己你稚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布朱躺。 她就那樣靜靜地躺著刁赖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪长搀。 梳的紋絲不亂的頭發(fā)上宇弛,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音源请,去河邊找鬼涯肩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛巢钓,可吹牛的內(nèi)容都是我干的病苗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼症汹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼硫朦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起背镇,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咬展,失蹤者是張志新(化名)和其女友劉穎泽裳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體破婆,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涮总,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祷舀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瀑梗。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖裳扯,靈堂內(nèi)的尸體忽然破棺而出抛丽,到底是詐尸還是另有隱情,我是刑警寧澤饰豺,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布亿鲜,位于F島的核電站,受9級(jí)特大地震影響冤吨,放射性物質(zhì)發(fā)生泄漏蒿柳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一漩蟆、第九天 我趴在偏房一處隱蔽的房頂上張望垒探。 院中可真熱鬧,春花似錦爆安、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至咖耘,卻和暖如春翘簇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背儿倒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工版保, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夫否。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓彻犁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親凰慈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汞幢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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