回答編集履歴
1
用語の誤用を訂正。(コンストラクタをイニシャライザに修正)
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## `()`は
|
1
|
+
## `()`はイニシャライザの呼び出し、`[]`はサブスクリプトの呼び出しです
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
この`Impression`構造体を、`Impression(3)`や、`Impression(int: 3)`として作成することはできません。引数が合致するコンストラクタがないからです。
|
19
|
+
この`Impression`構造体を、`Impression(3)`や、`Impression(int: 3)`として作成することはできません。引数が合致するイニシャライザ(他の言語ではコンストラクタとも呼びます)がないからです。
|
20
20
|
|
21
21
|
|
22
22
|
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
`()`は
|
27
|
+
`()`はイニシャライザの呼び出しで、`[]`はサブスクリプトの呼び出しです。
|
28
28
|
|
29
29
|
サブスクリプトがそういうものである、というのはozwkさんの回答の通りです。
|
30
30
|
|
@@ -36,11 +36,11 @@
|
|
36
36
|
|
37
37
|
|
38
38
|
|
39
|
-
##
|
39
|
+
## イニシャライザについて
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
`Impression`構造体を`Impression(int: 3)`として作成できるようにするには、
|
43
|
+
`Impression`構造体を`Impression(int: 3)`として作成できるようにするには、イニシャライザを用意してあげる必要があります。
|
44
44
|
|
45
45
|
|
46
46
|
|
@@ -78,7 +78,7 @@
|
|
78
78
|
|
79
79
|
|
80
80
|
|
81
|
-
プロパティの定義だけでよいのは、Swiftが自動的にメンバワイズ
|
81
|
+
プロパティの定義だけでよいのは、Swiftが自動的にメンバワイズイニシャライザと呼ばれるイニシャライザを作ってくれるからです。つまり、以下のように書いたのと同じと解釈されているからで、イニシャライザがないのではありません。
|
82
82
|
|
83
83
|
|
84
84
|
|
@@ -100,13 +100,13 @@
|
|
100
100
|
|
101
101
|
|
102
102
|
|
103
|
-
(細かい話ですが、メンバワイズ
|
103
|
+
(細かい話ですが、メンバワイズイニシャライザでは、引数名とプロパティ名が同じになるので、プロパティ名を`int`にしてあげないと、引数名を`int`にはできません。)
|
104
104
|
|
105
105
|
|
106
106
|
|
107
107
|
この状態でも、`Impression(3)`とするとエラーになります。
|
108
108
|
|
109
|
-
Impression(3)として使うには、別の
|
109
|
+
Impression(3)として使うには、別のイニシャライザが要ります。
|
110
110
|
|
111
111
|
|
112
112
|
|
@@ -122,11 +122,11 @@
|
|
122
122
|
|
123
123
|
|
124
124
|
|
125
|
-
引数名のない
|
125
|
+
引数名のないイニシャライザを定義してあげないと、引数名なしでインスタンス化させることはできません。
|
126
126
|
|
127
127
|
|
128
128
|
|
129
|
-
もし、`Impression(3)`でも`Impression(int: 3)`でも良いようにしたかったら、両方の
|
129
|
+
もし、`Impression(3)`でも`Impression(int: 3)`でも良いようにしたかったら、両方のイニシャライザを定義しなくてはなりません。
|
130
130
|
|
131
131
|
|
132
132
|
|
@@ -154,4 +154,8 @@
|
|
154
154
|
|
155
155
|
|
156
156
|
|
157
|
-
なお、メンバワイズ
|
157
|
+
なお、メンバワイズイニシャライザは、他にイニシャライザ定義がないときだけ作成されるのでご注意ください。
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
※当初イニシャライザをコンストラクタと呼んでいましたがSwiftの言語仕様ではイニシャライザが正しいので、修正しました。
|