Enumerationは数値だけでなく、FloatもOKのようです。
値を保持するEnumerationも定義する事が可能です。
値を保持するEnumはサーバーの戻り値を定義したりする際に使えるかもしれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | // 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 値をストアする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キーワードから始まります。
データの保持に特化する場合は、構造体を使うのが良さそうです。
1 2 3 4 5 6 7 8 9 10 11 | // 構造体は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()) |
0 件のコメント :
コメントを投稿