0%

Swift 013 Enumerations

Enum

在使用一些函式的時候,我們有時會會不小心給錯輸入的值而產生粗心的錯誤,有可能大小寫不對、全形半形導致錯誤找了很久才找到,為了避免這個錯誤我們可以使用enum先定義好這個輸入的型態,如果在這個型態之外我們就會產生警告,以下是還未使用enum時的寫法。

1
2
3
4
5
6
7
func getStatusNoEnum(weather: String) -> String? {
if weather == "sunny" {
return "Good"
}else {
return nil
}
}

使用enum後將可以完全的避免掉粗心的錯誤。

1
2
3
4
5
6
7
8
9
func getStatus(weather: WeatherType) -> String? {
if weather == WeatherType.sun {
return "Good"
}else {
return nil
}
}

getHaterStatus(weather: WeatherType.cloud)

你還可以將輸入化簡,讓程式碼簡潔乾淨。

1
2
3
4
5
6
7
8
9
10
11
12
func getStatusSwitch(weather: WeatherType) -> String? {
switch weather {
case .sun:
return "Sun!"
case .cloud:
return "Cloud"
default:
return nil
}
}

getStatusSwitch(weather: .cloud)

當然如果你有需要你可以在enum中定義參數的型態,在調用時將會出現你所定義的變數名稱,。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
enum speedType {
case one
case two
case three(speed: Int)
}

func getStatusSpeed(speed: speedType) -> String? {
switch speed {
case .one:
return "one!"
case .two:
return "two!"
case .three(let speed) where speed > 10:
return "three > 10"
case .three(let speed) where speed < 10:
return "three < 10"
default:
return nil
}
}


getStatusSpeed(speed: .three(speed: 11))