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 回答