Rubyファイルの変数を隠すためのベストプラクティスは、JavaScriptの(function(){})()クロージャと同じですか?Rubyで変数を隠す
私が持っているファイルのであれば:
foo = 5
bar = foo * foo
を誰かがそれを必要とするとき私は、fooではなく、バーを公開します。
Rubyファイルの変数を隠すためのベストプラクティスは、JavaScriptの(function(){})()クロージャと同じですか?Rubyで変数を隠す
私が持っているファイルのであれば:
foo = 5
bar = foo * foo
を誰かがそれを必要とするとき私は、fooではなく、バーを公開します。
ファイルが2行あり、そのファイルが必要な場合は、2つの変数のどちらも公開されません。ローカル変数は、グローバルスコープに表示されていてもファイルのローカルです。
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
Rubyはオブジェクト指向です。クラスを使用する。 –