0

Cでは、私はできる

int scoped_var = 2;
{
    int scoped_var = 3;
}

Rubyでこれを行うにはどうすればよいですか?

4

2 に答える 2

5

以前に定義された変数を設定せずに、ブロックが定義されているスコープ内の変数と同じ名前のブロック ローカル変数を探している場合は、次の構文を使用できます。

foo = 1
items.each do |item;foo|
  foo = item.number
end
puts foo #=> 1

ブロック変数を渡さずにこれを行うこともできます。

x = Proc.new { |;foo| ... }

これは Ruby 1.9+ のみであることに注意してください。

于 2012-04-15T21:55:00.780 に答える
0

これは Ruby が実際に行うことではありません。ローカルは割り当てによって作成されます。パラメータとして宣言する以外に、それらを宣言する方法はありません。(そして 1.9 では、これにはブロック パラメーターが含まれます。)

同様のことをする Rubyish の方法は、割り当てを介して別のローカルに保存して復元することだと思います。

于 2012-04-15T22:04:13.663 に答える