2012-08-27 24 views
6
yılında Derece ve Yerel Değişkenler arasındaki fark

Olası Çoğalt:
Rails and class variablesYakut: Ruby

herkes söyleyebilir misiniz neyin Yakut Örnek değişkenler ve Yerel değişkenler arasındaki fark nedir?

Her iki Örnek değişkenini ve Yerel değişkenleri bildiğim kadarıyla ve her ikisi de yöntemin içinde bildirilir ve bu örnek değişkenler hariç @ işareti ile belirtilir.

+0

burada bu konuda bir açıklama vardır: http://stackoverflow.com/questions/11523547/rails-and-class-variables/11523632#11523632 – Frost

+1

Google'ı o. Ciddiyim. – vise

cevap

11

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 
+0

harika cevap - method_one'da bir yerel değişken (ör., LocalVar) bildirilmişse, o zaman method_two'dan çağrılamaz. – BKSpurgeon