scope meselesi. Yerel bir değişken, tanımlandığı yöntemde yalnızca görünür/kullanılabilir (yani, yöntem döndürüldüğünde gider).
Bir örnek değişkeni, diğer bir deyişle, tanımlandığı sınıf örneğinin herhangi bir yerinde görünür (bu, bir sınıfın tüm örnekleri arasında paylaşılan bir sınıf değişkeninden farklıdır). Bununla birlikte, örnek değişkenini tanımladığınızda, 'un önemli olduğunu unutmayın.
def method_one
@var = "a variable"
puts @var
end
def method_two
puts @var
end
@var farklı bir değer bağlı olacaktır: Bir yöntemde bir örnek değişken tanımlamak, ancak ilkini çağırmadan önce başka yöntemde kullanmak çalışırsanız, örneğin değişken nil değerine sahip olacaktır her bir yöntemi çağırdığınızda:
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
burada bu konuda bir açıklama vardır: http://stackoverflow.com/questions/11523547/rails-and-class-variables/11523632#11523632 – Frost
Google'ı o. Ciddiyim. – vise