2012-03-17 8 views
0

Rubyファイルの変数を隠すためのベストプラクティスは、JavaScriptの(function(){})()クロージャと同じですか?Rubyで変数を隠す

私が持っているファイルのであれば:

foo = 5 
bar = foo * foo 

を誰かがそれを必要とするとき私は、fooではなく、バーを公開します。

+5

Rubyはオブジェクト指向です。クラスを使用する。 –

答えて

6

ファイルが2行あり、そのファイルが必要な場合は、2つの変数のどちらも公開されません。ローカル変数は、グローバルスコープに表示されていてもファイルのローカルです。

barを公開する場合は、グローバル変数$barに変更するか、変数を変更しない場合は、定数Barに変更する必要があります。 fooと同じことをしないことによって、自動的に公開されません。

また、モジュールまたはクラスで全体をラップすることも考えられます。

1

Rubyには他の多くの言語と同じようなスコープがあります。変数は、初めて使用されるときに宣言され、宣言されている場所に基づいてスコープが設定されます。あなたが関数にローカルを使用する場合:

def do_something 
    foo = 5 
    foo * foo 
end 

puts do_something 

それは25を印刷しますが、fooがdo_something関数の外で使用することはできません。

これはあなたが探しているものですか?

この記事では、Rubyのスコープの詳細をRuby Scoping Rulesで説明しています。

+0

実際には、もっと頑強なソリューションのためにクラスを使うことについてのコメントに感謝していますが、これはfoo = lambda {...} .callのバリエーションを使用します。 – mahemoff

関連する問題