将变量隐藏在Ruby文件中的最佳做法是什么,就像JavaScript中的(function(){})()闭包的等价物一样?在Ruby中隐藏变量
所以,如果我有一个文件:
foo = 5
bar = foo * foo
我只是想揭露吧,不是foo,当有人需要它。
将变量隐藏在Ruby文件中的最佳做法是什么,就像JavaScript中的(function(){})()闭包的等价物一样?在Ruby中隐藏变量
所以,如果我有一个文件:
foo = 5
bar = foo * foo
我只是想揭露吧,不是foo,当有人需要它。
如果您有包含这两行的文件,并且某人需要该文件,则两个变量都不会公开。即使文件出现在全局范围内,本地变量仍然是本地文件。
如果要公开bar
,你需要把它变成一个全局变量$bar
或者,如果你不打算为要改变的变量,为一个常数Bar
。通过不对foo
做同样的事情,它将自动不被暴露。
你也可以考虑把整个东西包装在模块或类中。
Ruby的范围与许多其他语言一样。变量首次被使用时会被声明,并且会根据它们被声明的位置来确定范围。如果您使用本地的功能:
def do_something
foo = 5
foo * foo
end
puts do_something
这将打印25,但foo将不会是do_something
功能外可用。
这是你在找什么?
本文将更深入地讨论Ruby的范围界限Ruby Scoping Rules。
其实我会用这个变体,foo = lambda {...} .call,虽然我很欣赏有关使用类的更强大的解决方案的评论。 – mahemoff 2012-03-17 14:39:04
Ruby是面向对象的。使用类。 – 2012-03-17 14:18:33