回答編集履歴
2
模擬コードを修正
answer
CHANGED
@@ -7,14 +7,14 @@
|
|
7
7
|
ない関数を「閉じている」と表現します。
|
8
8
|
|
9
9
|
```
|
10
|
-
fo() = a + 1 // 開いている
|
10
|
+
fo() = return a + 1 // 開いている
|
11
|
-
fc(x) = x + 1 // 閉じている
|
11
|
+
fc(x) = return x + 1 // 閉じている
|
12
12
|
```
|
13
13
|
|
14
14
|
開いている関数は、外部で変数が定義された文脈でしか実行できません。
|
15
15
|
|
16
16
|
```
|
17
|
-
fo() = a + 1
|
17
|
+
fo() = return a + 1
|
18
18
|
y = fo() // エラー
|
19
19
|
```
|
20
20
|
|
@@ -23,8 +23,8 @@
|
|
23
23
|
```
|
24
24
|
close_fo() =
|
25
25
|
a = 1 // 文脈
|
26
|
-
fo() = a + 1 // 開いている関数
|
26
|
+
fo() = return a + 1 // 開いている関数
|
27
|
-
fo
|
27
|
+
return fo
|
28
28
|
|
29
29
|
f = close_fo() // 閉じた関数がもらえる
|
30
30
|
|
@@ -40,7 +40,8 @@
|
|
40
40
|
f() =
|
41
41
|
print (count)
|
42
42
|
count = count + 1
|
43
|
+
return
|
43
|
-
f
|
44
|
+
return f
|
44
45
|
```
|
45
46
|
|
46
47
|
これはクロージャを使わずとも、
|
@@ -50,6 +51,7 @@
|
|
50
51
|
f() =
|
51
52
|
print (count)
|
52
53
|
count = count + 1
|
54
|
+
return
|
53
55
|
```
|
54
56
|
|
55
57
|
と書けます。
|
@@ -61,11 +63,13 @@
|
|
61
63
|
f1() =
|
62
64
|
print (count1)
|
63
65
|
count1 = count1 + 1
|
66
|
+
return
|
64
67
|
|
65
68
|
count2 = 0
|
66
69
|
f2() =
|
67
70
|
print (count2)
|
68
71
|
count2 = count2 + 1
|
72
|
+
return
|
69
73
|
```
|
70
74
|
|
71
75
|
クロージャなら
|
@@ -76,7 +80,8 @@
|
|
76
80
|
f() =
|
77
81
|
print (count)
|
78
82
|
count = count + 1
|
83
|
+
return
|
79
|
-
f
|
84
|
+
return f
|
80
85
|
|
81
86
|
f1 = make_counter()
|
82
87
|
f2 = make_counter()
|
1
表現の改善
answer
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
```
|
32
32
|
|
33
|
-
この、「開いている関数に実行文脈をつけたもの」をクロージャと呼びます。
|
33
|
+
この、「開いている関数に実行文脈をつけて閉じたもの」をクロージャと呼びます。
|
34
34
|
|
35
35
|
クロージャの使いみちによくカウンタが例に出てきます。
|
36
36
|
|