teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

修正

2016/06/17 12:19

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -15,3 +15,48 @@
15
15
  分かりにくい。
16
16
 
17
17
  `複数の状態の中に更に複数の状態を持たせたい場合`ですかね。
18
+
19
+ ---
20
+
21
+ ```swift
22
+ enum A {
23
+
24
+ // 状態1 (A1,A2,A3)
25
+ case A1(value: B)
26
+ case A2
27
+ case A3
28
+
29
+ // 状態2 (B1,B2,B3) 状態A1の場合
30
+ enum B {
31
+ case B1, B2, B3
32
+ }
33
+
34
+ var str: String {
35
+ let str: String!
36
+
37
+ switch self {
38
+ case .A1(let b):
39
+ switch b {
40
+ case .B1:
41
+ str = "B1"
42
+ case .B2:
43
+ str = "B2"
44
+ case .B3:
45
+ str = "B3"
46
+
47
+ }
48
+ case A2:
49
+ str = "A2"
50
+ case A3:
51
+ str = "A3"
52
+ }
53
+ return str
54
+ }
55
+ }
56
+
57
+
58
+ // AのA1という状態の中のB2という状態で初期化
59
+ var val = A.A1(value: .B2)
60
+ val.str
61
+ //=> "B2"
62
+ ```

3

修正

2016/06/17 12:19

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -1,14 +1,17 @@
1
- 以下のサイトの`5. 列挙型caseパターン`が質問のパターンに該当して参考になると思います。
1
+ `switch`に関しては以下のサイトの`5. 列挙型caseパターン`参考
2
- ※質問のパターンは更に`enum`の入れ子になっているので複雑になっています。
2
+ [Swift2のパターンマッチ構文集(ほぼ翻訳)](http://qiita.com/mono0926/items/f2875a9eacef53e88122)
3
3
 
4
- 検索ワードとしては`swift switch パターンマッチ`あたりでしょうか。
5
4
 
5
+ `enum`については以下の`付属型enum(Associated Value)`を参考
6
- [Swift2パターンマッチ構文集(ほぼ翻訳)](http://qiita.com/mono0926/items/f2875a9eacef53e88122)
6
+ [Swift列挙型(enum)おさらい](http://qiita.com/hachinobu/items/392c96820588d1c03b0c)
7
7
 
8
+ ※質問のパターンは更に`enum`の入れ子になっているので複雑になっていて、上記の合わせ技のような感じです。
9
+
10
+
8
11
  > どういう目的でこのような処理を書いているのでしょうか?
9
12
 
10
13
  `switch`文で状態を定義した`enum`(この場合はself)を判定して、その状態の中にも複数の状態`enum`を持っていてそれを`switch`で判定している、という感じでしょうか、、、
11
14
 
12
15
  分かりにくい。
13
16
 
14
- `複数の状態の中に更に複数の状態を持たせたい場合`ですかね。
17
+ `複数の状態の中に更に複数の状態を持たせたい場合`ですかね。

2

修正

2016/06/17 12:01

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -7,4 +7,8 @@
7
7
 
8
8
  > どういう目的でこのような処理を書いているのでしょうか?
9
9
 
10
- `switch`文で状態を定義した`enum`(この場合はself)を判定して、その状態の中にも複数の状態`enum`を持っていてそれを`switch`で判定している、という感じでしょうか
10
+ `switch`文で状態を定義した`enum`(この場合はself)を判定して、その状態の中にも複数の状態`enum`を持っていてそれを`switch`で判定している、という感じでしょうか、、、
11
+
12
+ 分かりにくい。
13
+
14
+ `複数の状態の中に更に複数の状態を持たせたい場合`ですかね。

1

修正

2016/06/17 11:42

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -3,4 +3,8 @@
3
3
 
4
4
  検索ワードとしては`swift switch パターンマッチ`あたりでしょうか。
5
5
 
6
- [Swift2のパターンマッチ構文集(ほぼ翻訳)](http://qiita.com/mono0926/items/f2875a9eacef53e88122)
6
+ [Swift2のパターンマッチ構文集(ほぼ翻訳)](http://qiita.com/mono0926/items/f2875a9eacef53e88122)
7
+
8
+ > どういう目的でこのような処理を書いているのでしょうか?
9
+
10
+ `switch`文で状態を定義した`enum`(この場合はself)を判定して、その状態の中にも複数の状態`enum`を持っていてそれを`switch`で判定している、という感じでしょうか。