將變量隱藏在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