gpt4 book ai didi

ruby - 如何创建没有命名空间污染的作用域

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:55 25 4
gpt4 key购买 nike

我想定义和使用一些变量而不影响命名空间

例如,在 C/C++/Java 中:

{
int i = 42;
...
}
int i = 52; // different variable

在 Javascript 中:

(function() {
var i = 42;
...
})();
var i = 52; // different variable

i 仅在 block 或函数范围内的代码可见,并且没有创建全局命名空间。

有没有办法用 Ruby 编写等价物?

最佳答案

你可以做几乎与 javascript 版本相同的事情

lambda do |;x|
x = 42
end.call
puts x #=> NameError

注意上面和之间有细微的差别

lambda do
x = 42
end.call

如果外部作用域中没有局部变量x,则两者的行为相同。然而,如果有这样一个局部变量,那么第二个代码片段可以访问它的值,并且更改会影响外部范围,但第一个版本不能做任何这些事情。

关于ruby - 如何创建没有命名空间污染的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29283793/

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