Arasındaki fark nedir @title
ve 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 @title
ve 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:
title
yerel 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.
@title
Değişkenlerin görünümlerinizde kullanılabilir olmasını istediğinizde denetleyicilerinizde kullanın .
Açıklama, @title
bir örnek değişkeni ve title
yerel 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
@variable
yakutta ö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_addr
sı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 self
ile 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
?
@title
yatitle
@ 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