[Swift] Enumerations and Structures

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 件のコメント :

コメントを投稿