在C中,您可以使用语句块将局部变量与其父作用域隔离开来。
int foo() {
{
int a;
}
// Here `a` is no longer in the scope.
}
但是在Ruby中,以下内容无法解析。
def foo
do
a = 1
end
puts a
end
有没有把变量分离到Ruby中的范围的技巧?
答案 0 :(得分:3)
在大多数情况下,最合适的“内部范围”是一种单独的方法。通常,如果某个算法块中的某些数据在外部不可见,则值得将此块提取到单独的方法中。它也可以,这个块可以成为一个很好的论点。
As the docs state,这些都是具有自己的局部变量范围的所有情况:
proc{ ... }
(因此,方法调用中的块)loop{ ... }
(接受块的方法,与上述相同)def ... end
(方法实施)class ... end
module ... end
答案 1 :(得分:2)
以下作品,但我怀疑还有其他方法。
proc {
a = 5
}.call