1. 程式人生 > >Swift列舉

Swift列舉

在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的列舉成員(返回一個可選值)