Swift列舉
阿新 • • 發佈:2018-12-30
在Swift中列舉型別是一等型別,它採用了很多傳統上只被類所支援的特徵。
例如1、計算型屬性(computed properties),用於提供關於列舉當前值的附加資訊。
2、例項方法(instance methods)用於提供和列舉所代表的值相關聯的功能。
3、構造器來提供一個出事成員值
4、遵守協議(protocols)提供標準的功能
5、擴充套件。
列舉的定義
eg enum SomeEumeration{
case North
case South
case East
case West
}
case表明新的一行成員值將要開始定義
和C、OC不一樣,Swift的列舉成員在被建立時·不會被賦予一個預設的整數值。
多個成員可以出現在同一行上,用,隔開
每個列舉定義了一個全新的型別。像Swift中的其他型別一樣,名字以一個大寫字母開頭
1、var directionToHead = CompassPoint.West
directionToHead = .East
switch directionToHead {
case .North
case .Soutrh
case .East
case .West
}
當考慮列舉成員時,一個Switch一定要全面。如果忽略了其中一個,以上程式碼將不會正確執行
當不需要匹配每一個成員的時候可以使用default
關聯值(Associated Values)
可以定義Swift的列舉儲存任何型別的關聯值,如果需要的話每個成員的資料型別可以是各不相同的。與標籤聯合相似
enum barcode{
case UPCA(Int,Int,Int)//barcode列舉型別可以是UPCA的關聯值
}
原始值
作為關聯值的替代,列舉成員可以被預設值(原始值)預先填充,其中這些原始值具有相同的型別
對於一個特定的列舉成員它的原始值始終是相同的。
原始值可以是字元,字串,數值型。在列舉中,每個原始值必須是唯一的。
如果整型作為原始值,當其他列舉成員沒有值時,他們會自動遞增
enum Planet: Int {
case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Nep
}
使用列舉成員的toRow方法可以訪問該列舉成員的原始值
SomeEumeration = SomeEumeration.East.toRow()//訪問原始值
使用fromRow試圖找到具有特定原始值的列舉成員 let possiblePlanet = SomeEumeration.fromRow(7)//找到列舉值為7的列舉成員(返回一個可選值)
使用fromRow試圖找到具有特定原始值的列舉成員 let possiblePlanet = SomeEumeration.fromRow(7)//找到列舉值為7的列舉成員(返回一個可選值)