0

こんにちは、Ruby on Rails の初心者です。関数/メソッド内で変数を宣言することは可能ですか?教えてください。

def fun1
  #initialized a global variable 
end  

def fun2
  #access value   
end 

fun2関数によってfun1関数で宣言された変数の値を取得することは可能ですか

4

2 に答える 2

1

真にグローバルな変数を作成するには、次を使用します$

def fun1
  $foo = 'bar'
end  

def fun2
  puts $foo
end 

Hereは、一度呼び出され$fooたクラス インスタンスの外で使用できます。fun1

最初のコメントで述べたように、これは慎重に使用する必要があります

どこからでも書き込めるので危険です。グローバルを使いすぎると、バグの特定が難しくなる可能性があります。また、プログラムの設計が慎重に検討されていないことを示す傾向もあります。

おそらくあなたが求めているのは、以下を使用するインスタンス変数です@

def fun1
  @foo = 'bar'
end  

def fun2
  puts @foo
end 

Here@fooは、クラスの現在のインスタンスのどこでも使用できます。これも、呼び出しによって宣言された後fun1です。

たとえば、ルビーのさまざまな変数スコープでこれを参照してください。

于 2012-09-08T05:48:15.623 に答える
0

まず、関数からグローバル変数を定義するために必要なものについて、実際のシナリオを共有できるとよいでしょう。ソリューションには、より優れた管理しやすい DRY アプローチがあるかもしれません。

第二に、「Thilo」からの回答とは別に、さまざまな状況でのレールのグローバル変数の使用法を示すいくつかの参考文献があります。ルビーに限らず。レールに必要ですか?

于 2012-09-08T06:15:38.803 に答える