Arasındaki fark nedir @titleve title? Çünkü ikisi de değişken isimler olabilir. Ayrıca, ne tür bir değişken kullanmam gerektiğine nasıl karar verebilirim? İle @ya da değil?
Arasındaki fark nedir @titleve title? Çünkü ikisi de değişken isimler olabilir. Ayrıca, ne tür bir değişken kullanmam gerektiğine nasıl karar verebilirim? İle @ya da değil?
Yanıtlar:
titleyerel bir değişkendir. Sadece kendi kapsamı dahilindedir (mevcut blok)
@title bir örnek değişkendir - ve sınıf içindeki tüm yöntemler tarafından kullanılabilir.
Daha fazla bilgiyi buradan okuyabilirsiniz: http://strugglingwithruby.blogspot.dk/2010/03/variables.html
Ruby on Rails - denetleyicinizdeki değişkenlerinizi örnek değişkenler ( @title) olarak bildirmek , bunları görünümünüz için kullanılabilir hale getirir.
@titleDeğişkenlerin görünümlerinizde kullanılabilir olmasını istediğinizde denetleyicilerinizde kullanın .
Açıklama, @titlebir örnek değişkeni ve titleyerel bir değişkendir ve raylar, denetleyicilerin örnek değişkenlerini görünümler için kullanılabilir hale getirir. Bunun nedeni, şablon kodunun (erb, haml, vb.) Geçerli denetleyici örneği kapsamında yürütülmesi nedeniyle olur.
Fark, değişkenin kapsamı içindedir. @Version, sınıf örneğinin tüm yöntemleri tarafından kullanılabilir.
Kısa cevap, denetleyicideyseniz ve değişkeni görünüm için kullanılabilir hale getirmeniz gerekiyorsa kullanın @variable.
Daha uzun bir cevap için şunu deneyin: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
@variableyakutta örnek değişkenler olarak adlandırılır. Yani bu değişkenlere sınıf içindeki HERHANGİ BİR YÖNTEM'de erişebilirsiniz. [Sınıftaki tüm yöntemlerde]
@Sembolü olmayan değişkenlere yerel değişkenler denir, yani bu yerel değişkenlere yalnızca BU DECLARED METHOD içinde erişebilirsiniz. Yerel kapsamla sınırlıdır.
Örnek Değişkenlerine Örnek:
class Customer
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
def display_details
puts "Customer id #{@cust_id}"
puts "Customer name #{@cust_name}"
puts "Customer address #{@cust_addr}"
end
end
Yukarıdaki örnekte @cust_id,@cust_name , @cust_addrsınıf içinde, başka bir yöntemde erişilir. Fakat aynı şey yerel değişkenlerle elde edilemezdi.
İlgili bir öğretici Ne Değişken Kapsamı nedir? bazı ayrıntıları oldukça iyi sunuyor, sadece ilgili olanları buraya ekleyin.
+------------------+----------------------+
| Name Begins With | Variable Scope |
+------------------+----------------------+
| $ | A global variable |
| @ | An instance variable |
| [a-z] or _ | A local variable |
| [A-Z] | A constant |
| @@ | A class variable |
+------------------+----------------------+
Yerel bir değişkene yalnızca başlatma bloğundan erişilebilir. Ayrıca yerel bir değişken küçük harf (az) veya alt çizgi (_) ile başlar.
İnstance değişkeni bir örneğidir ve bir selfile başlar. @Ayrıca bir example değişkeni nesnenin kendisine aittir. Eşgörünüm değişkenleri, örn..send vb.
misal:
@user = User.all
The @userörnek değişkeni
Başlatılmamış örnek değişkenlerin değeri Nil
@title& arasındaki farkı nasıl açıklıyor title?
@titleyatitle
@ değişkenleri yerel değişkenler olmadan örnek değişkenleridir.
Daha fazla bilgi için http://ruby.about.com/od/variables/a/Instance-Variables.htm