回答編集履歴

4

修正

2016/06/17 12:19

投稿

_Kentarou
_Kentarou

スコア8490

test CHANGED
@@ -33,3 +33,91 @@
33
33
  `複数の状態の中に更に複数の状態を持たせたい場合`ですかね。
34
34
 
35
35
 
36
+
37
+ ---
38
+
39
+
40
+
41
+ ```swift
42
+
43
+ enum A {
44
+
45
+
46
+
47
+ // 状態1 (A1,A2,A3)
48
+
49
+ case A1(value: B)
50
+
51
+ case A2
52
+
53
+ case A3
54
+
55
+
56
+
57
+ // 状態2 (B1,B2,B3) 状態A1の場合
58
+
59
+ enum B {
60
+
61
+ case B1, B2, B3
62
+
63
+ }
64
+
65
+
66
+
67
+ var str: String {
68
+
69
+ let str: String!
70
+
71
+
72
+
73
+ switch self {
74
+
75
+ case .A1(let b):
76
+
77
+ switch b {
78
+
79
+ case .B1:
80
+
81
+ str = "B1"
82
+
83
+ case .B2:
84
+
85
+ str = "B2"
86
+
87
+ case .B3:
88
+
89
+ str = "B3"
90
+
91
+
92
+
93
+ }
94
+
95
+ case A2:
96
+
97
+ str = "A2"
98
+
99
+ case A3:
100
+
101
+ str = "A3"
102
+
103
+ }
104
+
105
+ return str
106
+
107
+ }
108
+
109
+ }
110
+
111
+
112
+
113
+
114
+
115
+ // AのA1という状態の中のB2という状態で初期化
116
+
117
+ var val = A.A1(value: .B2)
118
+
119
+ val.str
120
+
121
+ //=> "B2"
122
+
123
+ ```

3

修正

2016/06/17 12:19

投稿

_Kentarou
_Kentarou

スコア8490

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

2

修正

2016/06/17 12:01

投稿

_Kentarou
_Kentarou

スコア8490

test CHANGED
@@ -16,4 +16,12 @@
16
16
 
17
17
 
18
18
 
19
- `switch`文で状態を定義した`enum`(この場合はself)を判定して、その状態の中にも複数の状態`enum`を持っていてそれを`switch`で判定している、という感じでしょうか
19
+ `switch`文で状態を定義した`enum`(この場合はself)を判定して、その状態の中にも複数の状態`enum`を持っていてそれを`switch`で判定している、という感じでしょうか、、、
20
+
21
+
22
+
23
+ 分かりにくい。
24
+
25
+
26
+
27
+ `複数の状態の中に更に複数の状態を持たせたい場合`ですかね。

1

修正

2016/06/17 11:42

投稿

_Kentarou
_Kentarou

スコア8490

test CHANGED
@@ -9,3 +9,11 @@
9
9
 
10
10
 
11
11
  [Swift2のパターンマッチ構文集(ほぼ翻訳)](http://qiita.com/mono0926/items/f2875a9eacef53e88122)
12
+
13
+
14
+
15
+ > どういう目的でこのような処理を書いているのでしょうか?
16
+
17
+
18
+
19
+ `switch`文で状態を定義した`enum`(この場合はself)を判定して、その状態の中にも複数の状態`enum`を持っていてそれを`switch`で判定している、という感じでしょうか。