Ruby中没有操作范围?

And*_*rio 0 c ruby syntax scope

在C中,我可以做到

int scoped_var = 2;
{
    int scoped_var = 3;
}
Run Code Online (Sandbox Code Playgroud)

我如何在Ruby中执行此操作?

cor*_*ard 5

如果您希望将一个块本地变量命名为与作用域中的变量相同,则在不设置先前定义的变量的情况下定义块,您可以使用以下语法:

foo = 1
items.each do |item;foo|
  foo = item.number
end
puts foo #=> 1
Run Code Online (Sandbox Code Playgroud)

您也可以在不传递块变量的情况下执行此操作:

x = Proc.new { |;foo| ... }
Run Code Online (Sandbox Code Playgroud)

请注意,这只是Ruby 1.9+.