在Ruby中隐藏变量

时间:2012-03-17 14:16:34

标签: ruby

将变量隐藏在Ruby文件中的最佳做法是什么,比如JavaScript中的(function(){})()闭包等效?

所以,如果我有一个文件:

foo = 5
bar = foo * foo

当有人需要时,我只想暴露吧,而不是foo。

2 个答案:

答案 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