a swift tour のenum型の説明において、以下の説明とコードの例示があります。
By default, Swift assigns the raw values starting at zero and incrementing by one each time, but you can change this behavior by explicitly specifying values. In the example above, Ace is explicitly given a raw value of 1, and the rest of the raw values are assigned in order. You can also use strings or floating-point numbers as the raw type of an enumeration. Use the rawValue property to access the raw value of an enumeration case.
Use the init?(rawValue:) initializer to make an instance of an enumeration from a raw value. It returns either the enumeration case matching the raw value or nil if there is no matching Rank.
純粋に文章通り、読むとrawValue1が明示的に与えられていて、残りのrawValueは順番に割り当てられる。init?(rawValue:)でインスタンスを作成するとraw valueに一致するenum型または一致するものがなければnilを返します。
と要点を解しております。
ここで、Rank(rawValue: 3)の記法が全く文章からは理解できないのですが、何をしようとしているのでしょうか?文章にもある様なinit?にもなっていないですし、またそこが理解できてないため最終的になぜthreeDescription
が3を返すのかという動作の過程が理解できません。
意外とのこの様なenumの記法に関する記事が見当たらなかったため、ご存知の方がいればお力添えを願います。
よろしくお願い申し上げます。
Swift
1enum Rank: Int { 2 case ace = 1 3 case two, three, four, five, six, seven, eight, nine, ten 4 case jack, queen, king 5 6 func simpleDescription() -> String { 7 switch self { 8 case .ace: 9 return "ace" 10 case .jack: 11 return "jack" 12 case .queen: 13 return "queen" 14 case .king: 15 return "king" 16 default: 17 return String(self.rawValue) 18 } 19 } 20} 21 22if let convertedRank = Rank(rawValue: 3) { 23 let threeDescription = convertedRank.simpleDescription() 24} 25//以下のコードは a swift tourにはないです 26print(threeDescription)//3
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/13 14:28
2020/11/13 14:36
2020/11/13 23:52
2020/11/15 05:44