Swift枚舉相關(guān)值

例如最盅,假設(shè)一個庫存跟蹤系統(tǒng)需要利用兩種不同類型的條形碼來跟蹤商品葵蒂。有些商品上標有 UPC-A 格式的一維碼担敌,它使用數(shù)字 0 到 9。每一個條形碼都有一個代表“數(shù)字系統(tǒng)”的數(shù)字辞槐,該數(shù)字后接 10 個代表“標識符”的數(shù)字掷漱。最后一個數(shù)字是“檢查”位,用來驗證代碼是否被正確掃描:

其他商品上標有 QR 碼格式的二維碼榄檬,它可以使用任何 ISO8859-1 字符卜范,并且可以編碼一個最多擁有 2,953 字符的字符串:

對于庫存跟蹤系統(tǒng)來說,能夠把 UPC-A 碼作為三個整型值的元組鹿榜,和把 QR 碼作為一個任何長度的字符串存儲起來是方便的海雪。

在 Swift 中锦爵,用來定義兩種商品條碼的枚舉是這樣子的:

enumBarcode{caseUPCA(Int,Int,Int)caseQRCode(String)}

Swift

以上代碼可以這么理解:

“定義一個名為Barcode的枚舉類型,它可以是UPCA的一個相關(guān)值(Int喳魏,Int,Int)怀薛,或者QRCode的一個字符串類型(String)相關(guān)值刺彩。”

這個定義不提供任何Int或String的實際值枝恋,它只是定義了创倔,當(dāng)Barcode常量和變量等于Barcode.UPCA或Barcode.QRCode時,相關(guān)值的類型焚碌。

然后可以使用任何一種條碼類型創(chuàng)建新的條碼畦攘,如:

varproductBarcode=Barcode.UPCA(8,85909_51226,3)

Swift

以上例子創(chuàng)建了一個名為productBarcode的新變量,并且賦給它一個Barcode.UPCA的相關(guān)元組值(8, 8590951226, 3)十电。提供的“標識符”值在整數(shù)字中有一個下劃線知押,使其便于閱讀條形碼。

同一個商品可以被分配給一個不同類型的條形碼鹃骂,如:

productBarcode=.QRCode("ABCDEFGHIJKLMNOP")

Swift

這時台盯,原始的Barcode.UPCA和其整數(shù)值被新的Barcode.QRCode和其字符串值所替代。條形碼的常量和變量可以存儲一個.UPCA或者一個.QRCode(連同它的相關(guān)值)畏线,但是在任何指定時間只能存儲其中之一静盅。

像以前那樣,不同的條形碼類型可以使用一個 switch 語句來檢查寝殴,然而這次相關(guān)值可以被提取作為 switch 語句的一部分蒿叠。你可以在switch的 case 分支代碼中提取每個相關(guān)值作為一個常量(用let前綴)或者作為一個變量(用var前綴)來使用:

switch productBarcode

{

case.UPCA(let numberSystem,let identifier,let check):

print("UPC-A with value of\(numberSystem),\(identifier),\(check).")

case.QRCode(let productCode):

println("QR code with value of\(productCode).")

}// 輸出 "QR code with value of ABCDEFGHIJKLMNOP.”

Swift

如果一個枚舉成員的所有相關(guān)值被提取為常量,或者它們?nèi)勘惶崛樽兞框汲#瑸榱撕啙嵤醒剩憧梢灾环胖靡粋€var或者let標注在成員名稱前:

switch productBarcode

{

case let .UPCA(numberSystem,identifier,check):

print("UPC-A with value of\(numberSystem),\(identifier),\(check).")

case let .QRCode(productCode):

print("QR code with value of\(productCode).")

}// 輸出 "QR code with value of ABCDEFGHIJKLMNOP."

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抵蚊,隨后出現(xiàn)的幾起案子魂务,更是在濱河造成了極大的恐慌,老刑警劉巖泌射,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粘姜,死亡現(xiàn)場離奇詭異,居然都是意外死亡熔酷,警方通過查閱死者的電腦和手機孤紧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拒秘,“玉大人号显,你說我怎么就攤上這事臭猜。” “怎么了押蚤?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵蔑歌,是天一觀的道長。 經(jīng)常有香客問我揽碘,道長次屠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任雳刺,我火速辦了婚禮劫灶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掖桦。我一直安慰自己本昏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布枪汪。 她就那樣靜靜地躺著涌穆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪雀久。 梳的紋絲不亂的頭發(fā)上蒲犬,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音岸啡,去河邊找鬼原叮。 笑死,一個胖子當(dāng)著我的面吹牛巡蘸,可吹牛的內(nèi)容都是我干的奋隶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悦荒,長吁一口氣:“原來是場噩夢啊……” “哼唯欣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搬味,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤境氢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碰纬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萍聊,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年悦析,在試婚紗的時候發(fā)現(xiàn)自己被綠了寿桨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡强戴,死狀恐怖亭螟,靈堂內(nèi)的尸體忽然破棺而出挡鞍,到底是詐尸還是另有隱情,我是刑警寧澤预烙,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布墨微,位于F島的核電站,受9級特大地震影響扁掸,放射性物質(zhì)發(fā)生泄漏翘县。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一也糊、第九天 我趴在偏房一處隱蔽的房頂上張望炼蹦。 院中可真熱鬧羡宙,春花似錦狸剃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匿刮,卻和暖如春僧凰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背熟丸。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工训措, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人光羞。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓绩鸣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纱兑。 傳聞我的和親對象是個殘疾皇子呀闻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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