Ruby で無名スコープみたいなのを記述する
C++ では {}
で任意の箇所に無名スコープをつくることができます。
int value = 10; { int count = 3; // スコープの外の変数にアクセスできる value += count; } // スコープの中で定義した変数はスコープ外でアクセスはできない // value = count;
Ruby の場合、似たようなきのうに begin 〜 end
がありますが、この場合は、
begin value = 42 end # スコープ外からアクセスできる p value + 10
このようにスコープ外からアクセスする事が出来ます。
[#instance_eval
を使う]
このような問題を回避する場合は、#instance_eval
を利用する事が出来ます。
value = 10 instance_eval do count = 3 value += count end p value # => 13 # スコープ外からはアクセスできない # value = count
べんり。