質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

990閲覧

Swift 列挙型のケースにローバリューと連想値の両方を持たせることはできないのか

moriman

総合スコア615

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/12/06 07:05

一応具体例を示しますと、

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{

上記のようなエラーがずらずらと出るのですが、ある列挙型の各ケースにローバリューと連想値の両方を持たせることはできないのでしょうか?
それとも、持たせることはできるが、記述方法が正しくないのでエラーが出ているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

投稿2019/12/06 07:14

MasatoUchida

総合スコア134

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問