如果我在 Ruby 1.9 下打开警告并执行以下操作:
$VERBOSE = true
x = 42
5.times{|x| puts x}
我明白了
warning: shadowing outer local variable - x
推测这与使用 x 作为 block 参数以及 block 外的变量有关,但“阴影”是什么意思?
最佳答案
阴影是指您有两个同名的不同局部变量。据说在内部作用域中定义的变量“遮蔽”了外部作用域中的变量(因为只要内部变量在作用域中,外部变量现在就不再可访问,即使它在其他情况下也会在作用域中)。
因此在您的情况下,您无法访问 block 中的外部 x
变量,因为您有一个同名的内部变量。
关于ruby - "shadowing"在 Ruby 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259314/