勉強不足ですみません。
自分の頭ではどうしても理解ができなかったので質問させていただきます。。。
わからないこと
なぜこのProcのインスタンスが値を保持して、callするたびにインクリメントできているのかわかりません
ruby
1def get_counter(start) 2 Proc.new{|n| start += n } 3end 4 5count_up = get_counter(1) 6count_up.call(1) #=> 2 7count_up.call(1) #=> 3 8count_up.call(1) #=> 4
考えたこと
(1)
ruby
1count_up = get_counter(1) 2 3# このとき変数count_upに代入されるProcのインスタンスは、以下と考えました 4Proc.new{|n| 1 += n } 5# 1 = 1 + n っておかしくない...? 6 7# Procで実行されたことは保持されるのではないかと考え、試したこと 8count_up = Proc.new{|n| 1 + n } 9count_up.call(1) # => 2 10count_up.call(1) # => 2
(2) これだったら意味がわかる...
ruby
1start = 1 2count_up = Proc.new{|n| start += n } 3 4count_up.call(1) # => 2 5count_up.call(1) # => 3 6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/23 08:02 編集
2019/11/23 08:32
2019/11/23 09:00