一応具体例を示しますと、
Swift
1enum EvaluationOfPlayer{ 2 case size(Int,Int) 3 case speed(Int) 4 case tech(String) 5} 6 7var point1=EvaluationOfPlayer.size(190,80) 8var point2=EvaluationOfPlayer.speed(10) 9var point3=EvaluationOfPlayer.tech("エラシコ") 10print(point1) 11 12func printEval(_ point:EvaluationOfPlayer){ 13 switch point{ 14 case .size(let height,let weight):print("身長:(height)cm--体重(weight)kg") 15 case .speed(let move):print("秒速(move)m/s") 16 case .tech(let tech):print("得意技:(tech)") 17 } 18}
上記が連想値を持つ列挙型EvaluationOfPlayerの定義で、
Swift
1enum EvaluationOfPlayer:String{ 2 case size(Int,Int)="体格" 3 case speed(Int)="スピード" 4 case tech(String)="得意技" 5}
EvaluationOfPlayerの定義部分を上記のようにして、ローバリューを持たせることができるかやってみると、
error: MyPlayground.playground:62:10: error: enum with raw type cannot have cases with arguments case size(Int,Int)="体格" MyPlayground.playground:61:25: note: declared raw type 'String' here enum EvaluationOfPlayer:String{ ^ error: MyPlayground.playground:63:10: error: enum with raw type cannot have cases with arguments case speed(Int)="スピード" MyPlayground.playground:61:25: note: declared raw type 'String' here enum EvaluationOfPlayer:String{ ^ error: MyPlayground.playground:64:10: error: enum with raw type cannot have cases with arguments case tech(String)="得意技" MyPlayground.playground:61:25: note: declared raw type 'String' here enum EvaluationOfPlayer:String{
上記のようなエラーがずらずらと出るのですが、ある列挙型の各ケースにローバリューと連想値の両方を持たせることはできないのでしょうか?
それとも、持たせることはできるが、記述方法が正しくないのでエラーが出ているのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。