は誰もいただきましたRubyのインスタンス変数とローカル変数の違いを教えてくださいませんか?
私の知る限り、インスタンス変数とローカル変数は同じで、両方ともメソッド自体の中で宣言されていますが、インスタンス変数は@ symbolを使って宣言されています。
は誰もいただきましたRubyのインスタンス変数とローカル変数の違いを教えてくださいませんか?
私の知る限り、インスタンス変数とローカル変数は同じで、両方ともメソッド自体の中で宣言されていますが、インスタンス変数は@ symbolを使って宣言されています。
scopeです。ローカル変数は、それが定義されているメソッドでのみ可視/使用可能である(すなわち、メソッドが戻るときに消える)。
インスタンス変数は、定義されているクラスのインスタンス内の他の場所で見ることができます(これはクラスのすべてのインスタンス間で共有されるクラス変数とは異なります)。しかし、の場合は、のインスタンス変数を定義することが重要です。
def method_one
@var = "a variable"
puts @var
end
def method_two
puts @var
end
@varが異なる値に依存しています:あなたは1つのメソッドでインスタンス変数を定義しますが、最初のものを呼び出す前に、別の方法でそれを使用しようとすると、あなたのインスタンス変数にnilの値を持つことになりますあなたは、各メソッドを呼び出すとき:
method_two() # Prints nil, because @var has not had its value set yet
method_one() # Prints "a variable", because @var is assigned a value in method_one
method_two() # Prints "a variable" now, because we have already called method_one
すばらしい答え - ローカル変数(localVarなど)がmethod_oneで宣言されている場合は、method_twoから呼び出すことはできません。 – BKSpurgeon
を私はここで、この上の説明があります。http://stackoverflow.com/questions/11523547/rails-and-class-variables/11523632#11523632 – Frost
Googleのそれ。私は真剣です。 – vise