使用enum關鍵字來建立列舉。
enum Enumeration {
}
利用列舉來表示東南西北四個方向。
enum CompassPoint {
case north
case south
case east
case west
}
多個值可以利用逗號隔開讓他們在同一行上。
enum Planet {
case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
}
可以宣告一個變數來推斷類型。
var directionToHead = CompassPoint.west
當類型以之時,再次賦值可以省略列舉的類型名,提升整體程式可讀性。
directionToHead = .east
Switch匹配enum
directionToHead = .south
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")
}
當不需要每個列舉成員時,可以添加一個default分支來涵蓋掉所有未明確處理的列舉成員。
let somePlanet = Planet.earth
switch somePlanet {
case .earth:
print("Mostly harmless")
default:
print("Not a safe place for humans")
}
遍歷列舉
enum Beverage: CaseIterable {
case coffee, tea, juice
}
let numberOfChoices = Beverage.allCases.count
print("(numberOfChoices) beverages available")
利用for in 來進行遍歷
for beverage in Beverage.allCases {
print(beverage)
}
相關值
enum Shape {
case circle
case rect
case triangele
}
進行了形狀的定義,但假設需要不同的參數時,可以進行不同的列舉宣告。
enum Shape {
case circle(center: (Double,Double), radius: Double)
case rect(center: (Double,Double), width: Double, height: Double)
case triangele(point1: (Double,Double), point2: (Double,Double), point3: (Double,Double))
}
在建立相關值列舉時,開發者需要提供參數列表所需要的參數。
var circle = Shape.circle(center: (0,0), radius: 3)
// 建立圓形列舉
var rect = Shape.rect(center: (1,1), width: 10, height: 15)
// 建立矩形列舉
var triangle = Shape.triangele(point1: (2,2), point2: (3,3), point3: (2,5))
// 建立三角形列舉
在switch case語句中,可以透過參數捕獲的方式來獲取列舉的相關值。
func shapeFunc(param: Shape) {
switch param {
case let .circle(center, radius):
print("(center),(radius)")
case let .rect(center, width, height):
print("(center),(width),(height)")
case let .triangele(point1, point2, point3):
print("(point1),(point2),(point3)")
}
}
shapeFunc(param: circle)
shapeFunc(param: rect)
shapeFunc(param: triangle)
接下來,是結構 Struct 的介紹