gpt4 book ai didi

Ruby 变量作用域 block

转载 作者:数据小太阳 更新时间:2023-10-29 07:30:08 26 4
gpt4 key购买 nike

在 C 中,您可以使用语句 block 将局部变量与其父作用域隔离。

int foo() {
{
int a;
}
// Here `a` is no longer in the scope.
}

但在 Ruby 中,以下内容无法解析。

def foo
do
a = 1
end
puts a
end

在 Ruby 中是否有将变量隔离到作用域中的技巧?

最佳答案

在大多数情况下,最合适的“内部作用域”是一个单独的方法。通常,如果某个算法 block 中的某些数据不应该在外部可见,则值得将该 block 提取到一个单独的方法中。也有可能,这个 block 可以成为一个很好的论据。

As the docs state ,这些都是有自己的局部变量作用域的情况:

  • proc{ ... }(因此,方法调用中的 block )
  • loop{ ... }(接受 block 的方法,同上)
  • def ... end(方法实现)
  • 类...结束
  • 模块 ... 结束
  • 整个程序(尽管这在问题范围内没有用)

关于Ruby 变量作用域 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26265651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com