2011-10-03 22 views
6

Bu nasıl çalışır? Aşağıdaki çalıştırıldığında, "hi from class" iki kez yazdırılır. Bunun böyle davranması için yakutta neler oluyor? Ben aslında bunu farkındayız bilmiyorum sınıfasınıfı Sınıf - örnek ile sınıf yöntemleri

class Class 
    def foo 
    puts "hi from class" 
    end 
end 

Class.foo 
x = Class.new 
x.foo 

cevap

9

için bir örnek yöntemi yapma değilim ama class Class ... end yaptığınızda, yeni bir sınıf Class adında oluştururken değil mi' Mevcut sınıfı Class yeniden açar.

Class'dan beri, tüm sınıfların örneklerinin olduğu sınıf Class'un kendi örneğidir. Bu nedenle Class'un herhangi bir örnek yöntemini Class numaralı telefondan doğrudan başka bir sınıfta da yapabilirsiniz.

+0

Öyleyse ne olur? (Sınıf Sınıfının bedeninde) Ben kendi kendini tanımla; "hi from ** self **" koyar; son; '... şimdi 'Class.foo' ifadesi' self'den hi baskı yapıyor? – slindsey3000

+0

@ slindsey3000: 'Class' üzerinde hem bir örnek yöntemi hem de bir sınıf yöntemi tanımlarsanız,' Class.foo 'sınıfı yöntemini çağırır ve "AnyOtherClass.foo" örnek yöntemini çağırır. Yani, örneğinizde 'Class.foo',' '** 'den hi **' yi basacaktır ve ör. 'String.foo', 'sınıftan merhaba' yazdıracaktır. – sepp2k

İlgili konular