回答編集履歴
2
誤字を修正しました。
test
CHANGED
@@ -76,7 +76,7 @@
|
|
76
76
|
|
77
77
|
// たとえば、定義したクロージャーを戻り値として外側に返すと、
|
78
78
|
|
79
|
-
// 通常であれば破棄されるはずの `number` も抱えたまま
|
79
|
+
// 通常であれば破棄されるはずの `number` も抱えたまま返す。
|
80
80
|
|
81
81
|
return closure
|
82
82
|
|
1
コードを実際に動かして遊ぶ例を追記しました。
test
CHANGED
@@ -107,3 +107,27 @@
|
|
107
107
|
|
108
108
|
|
109
109
|
なんにしても、先ほど挙げたコードの例と、挙げた2つの言葉「クロージングオーバー」と「キャプチャーリスト」について調べてみると、クロージャーに対する視野がまた広がってくるかもしれないです。
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
###### 先ほどのコード例の遊び方
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
先ほどのコードを記載した後、次のようなコードを書くと、実際に動かしてキャプチャーの挙動を試すことができます。戻り値で受け取ったクロージャーがキャプチャーしているはずの `number` の値の変化に注目してみてください。
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
```swift
|
122
|
+
|
123
|
+
let serialNumberGenerator = makeSerialNumberGenerator()
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
serialNumberGenerator() // => 1
|
128
|
+
|
129
|
+
serialNumberGenerator() // => 2
|
130
|
+
|
131
|
+
serialNumberGenerator() // => 3
|
132
|
+
|
133
|
+
```
|