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

べんり。