Enumerationは数値だけでなく、FloatもOKのようです。
値を保持するEnumerationも定義する事が可能です。
値を保持するEnumはサーバーの戻り値を定義したりする際に使えるかもしれません。
```swift
`gutter:true;
// Enumeration
enum Rank: Int {
case ace = 1
case two, three, four, five, six, seven, eight, nine, ten
case jack, queen, king
func simpleDescription() -> String {
switch self {
case .ace:
return "A"
case .jack:
return "J"
case .queen:
return "Q"
case .king:
return "K"
default:
return String(self.rawValue)
}
}
}
enum Suit: Int {
case club, dia, heart, spade
func simpleDescription() -> String {
switch self {
case .club:
return "Club"
case .dia:
return "Dia"
case .heart:
return "Heart"
case .spade:
return "Spade"
}
}
}
let ace = Rank.ace
print(ace.simpleDescription())
print(ace.rawValue)
```
Enumには関数を定義する事もできるので、Enumで振る舞いを定義する事もできそうです。
### 値をストアするEnum
```swift
`gutter:true;
// 値をストアするEnumも作成可能
enum ServerResponse {
case result(String, String)
case failure(String)
}
let success = ServerResponse.result("6:00 am", "8:09 pm")
let failure = ServerResponse.failure("out of cheese.")
switch success {
case let .result(sunrise, sunset):
print("Sunset is at \(sunrise) and sunset is at \(sunset)")
case let .failure(message):
print("Failure... \(message)")
}
```
同じ状態でも、保持する値が違うような場面で使用するとコードがスッキリしそうです。
## 構造体 (Structure)
構造体はstructキーワードから始まります。
データの保持に特化する場合は、構造体を使うのが良さそうです。
```swift
`gutter:true;
// 構造体はstructキーワードから始まる
struct Card {
var rank: Rank
var suit: Suit
func simpleDescription() -> String {
return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
}
}
let threeOfSpades = Card(rank: .three, suit: .spade)
print(threeOfSpades.simpleDescription())
```
## 参考URL
* [Swiftツアー](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html)
* [GitHub](https://github.com/k28/swift_study.git)
0 件のコメント :
コメントを投稿