将变量隐藏在Ruby文件中的最佳做法是什么,比如JavaScript中的(function(){})()闭包等效?
所以,如果我有一个文件:
foo = 5
bar = foo * foo
当有人需要时,我只想暴露吧,而不是foo。
答案 0 :(得分:6)
如果您有一个包含这两行的文件,而某人需要该文件,则这两个变量都不会公开。局部变量仍然是文件的本地变量,即使它们出现在全局范围内。
如果要公开bar
,则需要将其转换为全局变量$bar
,或者,如果您不打算将变量更改为常量{{1} }}。通过不对Bar
做同样的事情,它将自动不被曝光。
您也可以考虑将整个内容包装在模块或类中。
答案 1 :(得分:1)
Ruby拥有与其他语言一样多的范围。变量在第一次使用时被声明,并且将根据声明的位置具有范围。如果你使用函数的本地:
def do_something
foo = 5
foo * foo
end
puts do_something
它将打印25,但foo将无法在do_something
函数之外使用。
这是你要找的吗?
这篇文章更深入地讨论了Ruby的范围Ruby Scoping Rules。