ブロックローカル変数

ブロックローカル変数とは?

あまり使う機会はない。というか使わないと思う。

だけどもまたRuby勉強し直してて初めて知ったことなのでめも。

ブロック引数を;で区切り、続けて変数を宣言すると、ブロック内でのみ有効な独立した変数を扱うことができる

numbers = [1, 2, 3, 4]
sum = 0
# ブロック外のsumとは別物の変数sumを用意する
numbers.each do |n; sum|
  sum = 10
  sum += n
  p sum
end

=>

11
12
13
14

# ブロック内で使ったsumとブロック外のsumは別物なのでブロック外sumは変化なし

sum => 0

変数に適切な名前をつければブロックローカル変数なんて使わなそう…

チェリー本読んでるけどまだまだ知らないこと多い。