在C中,我可以做到
int scoped_var = 2;
{
int scoped_var = 3;
}
我如何在Ruby中执行此操作?
答案 0 :(得分:5)
如果您想要一个名为与作用域中的变量相同的块局部变量,而无需设置先前定义的变量,则可以使用以下语法来定义块:
foo = 1
items.each do |item;foo|
foo = item.number
end
puts foo #=> 1
您也可以在不传递块变量的情况下执行此操作:
x = Proc.new { |;foo| ... }
请注意,这只是Ruby 1.9+。
答案 1 :(得分:0)
这不是Ruby真正做的事情。当地人是通过任务创建的;除了作为参数之外,根本没有办法声明它们。 (在1.9中,这包括块参数。)
我认为Rubyish做类似事情的方法就是通过赋值来保存和恢复到另一个本地。