iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

列舉語法

使用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 的介紹


上一篇
Day15 Swift 閉包 Closures
下一篇
Day17 Swift 結構
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言