列挙型について記載します
まとめて宣言するケース
enum Planet {
case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
enumに関数をもたせたケース
enum Animals:String{
case Rion = "rion"
case Cat = "cat"
case Dog = "dog"
case Panda = "panda"
func description() -> String {
switch self {
case .Rion:
return "description rion"
case .Cat:
return "description cat"
case .Dog:
return "description dog"
case .Panda:
return "description panda"
}
}
}
Animals.Rion.description() //description rion
Associated Values
特定の型を指定したいが、別の型で置き換えたい時もある場合に使用
enum Barcode {
case UPCA(Int, Int, Int, Int)
case QRCode(String)
func traceValue() ->Void {
switch self {
case .UPCA(let numberSystem, let manufacturer, let product, let check):
print("UPC-A: \(numberSystem), \(manufacturer), \(product), \(check).")
case .QRCode(let productCode):
print("QR code: \(productCode).")
}
}
}
var productBarcode = Barcode.UPCA(8, 85909, 51226, 3)
productBarcode.traceValue() //UPCA(8, 85909, 51226, 3)
productBarcode = .QRCode("ABCDEF")
productBarcode.traceValue() //QRCode("ABCDEF")
全てのassociated valuesを変数や、定数で指定する場合は以下のように記載
switch productBarcode {
case let .UPCA(numberSystem, manufacturer, product, check):
print("UPC-A: \(numberSystem), \(manufacturer), \(product), \(check).")
case let .QRCode(productCode):
print("QR code: \(productCode).")
}
Raw Values
全て同じ型を持った列挙型がRaw Valuesになります
Raw Valueの取り出しはrawValueプロパティでアクセスします
enum ColorsImage:String {
case red = "hot"
case blue = "cool"
case yellow = "pretty"
}
let colorImage = ColorsImage.red.rawValue
print(colorImage) //hot
同じRaw Value を指定するとエラーになります
enum ColorsImage:String {
case red = "hot"
case blue = "cool"
case yellow = "pretty"
case grey = "cool" //error
}
自動でRaw Valueがセットされる例
enum Planet: Int {
case Mercury = 3, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
Planet.Mercury.rawValue //3
Planet.Venus.rawValue //4
以上