Cでは、私はできる
int scoped_var = 2;
{
int scoped_var = 3;
}
Rubyでこれを行うにはどうすればよいですか?
以前に定義された変数を設定せずに、ブロックが定義されているスコープ内の変数と同じ名前のブロック ローカル変数を探している場合は、次の構文を使用できます。
foo = 1
items.each do |item;foo|
foo = item.number
end
puts foo #=> 1
ブロック変数を渡さずにこれを行うこともできます。
x = Proc.new { |;foo| ... }
これは Ruby 1.9+ のみであることに注意してください。
これは Ruby が実際に行うことではありません。ローカルは割り当てによって作成されます。パラメータとして宣言する以外に、それらを宣言する方法はありません。(そして 1.9 では、これにはブロック パラメーターが含まれます。)
同様のことをする Rubyish の方法は、割り当てを介して別のローカルに保存して復元することだと思います。