2011-04-16 5 views
9

Herhangi bir sınıf tanımının dışındaki bir dosyada @foo örnek değişkeni oluşturmak ne demektir. Bir dosya var, test.rb ve dosyanın tüm içeriği aşağıda verilmiştir.Ruby Sınıf dışı örnek değişkenleri oluşturma

# test.rb 
@foo = "bar" 
puts @foo 

O "bar" basar, ancak bu sarma sınıfın çeşit bir örnek değişkendir?

İki dosya kullanarak sınama, her şeyin içine sarılmış bir main nesnesi olduğunu gösterir. Bu anlayış doğru mu? b.rb ait a.rb arasında

İçerik

@me = self 
@a = "from-a" 

İçerik

require "./a" 

@b = "from-b" 
puts @me == self # true (self refers to the same object) 
puts self.class # Object 
puts self.instance_variables # [@a, @b, @me] 

cevap

12

Her Ruby bir amacıdır. Yani, şu anda Object'un bir örneğidir, şu anda main nesnesindesiniz.

Dosyanızda, puts self.class'u koyarsanız, main altında çalıştığınızı ve sınıfın Object olduğunu görürsünüz. örneğin Hatta irb

:

ruby-1.9.2-p136 :001 > self 
=> main 
ruby-1.9.2-p136 :002 > self.class 
=> Object 
+0

'Nesnesi' her şeyin altında faaliyet gösterdiğini' örneğini main' mı? – Anurag