回答編集履歴
1
追記
answer
CHANGED
@@ -2,4 +2,16 @@
|
|
2
2
|
|
3
3
|
ブロックの中で初めて出てきた変数は、ブロックローカルになります。ブロックが繰り返し実行される場合は、その繰り返しの回のみです。
|
4
4
|
|
5
|
-
ということで、ループの前に、`year=nil`とか書いておいて、ブロックで初出とならないようにします。
|
5
|
+
ということで、ループの前に、`year=nil`とか書いておいて、ブロックで初出とならないようにします。
|
6
|
+
|
7
|
+
逆に、ブロック外で同名の変数が使われているかどうかにかかわらず、ブロックローカル変数を使いたい場合は、
|
8
|
+
```Ruby
|
9
|
+
foo=123
|
10
|
+
3.times {|i ; foo| foo = i }
|
11
|
+
p foo #=> 123 ・・・ 外の変数には影響しない
|
12
|
+
|
13
|
+
foo=123
|
14
|
+
3.times {|i| foo = i }
|
15
|
+
p foo #=> 2 ・・・外の変数を上書き
|
16
|
+
```
|
17
|
+
のように、ブロック引数のところに`;`で区切って書きますので合わせて覚えておきましょう。
|