2016-10-23 6 views
1

Wie lautet die Syntax zum Aufrufen einer Klassenmethode aus einer Instanzmethode? ich folgendesRuby Calling-Klassenmethode von Instance-Methode

class Class1 
    def initialize 
     #instance method 
     self.class.edit 
     puts "hello" 
    end 

    def self.edit 
     #class method 
     "ha" 
    end 
end 

c= Class1 

Wenn ich diesen Code ausführen, bekomme ich keine Ausgänge Angenommen haben.

+0

Versuchen Sie 'Class1.new'. 'initialize' ist eine Instanzmethode und muss daher für eine Instanz von' Class1' aufgerufen werden. 'Class1.new' erstellt die Instanz, ruft' initialize' darauf auf und gibt die Instanz zurück. –

Antwort

3

Sie erhalten keine Ausgabe, weil Sie nichts mit dem Ergebnis dieses Aufrufs tun, und Sie erstellen tatsächlich keine Instanz mit new, Sie machen nur c einen Alias ​​für diese Klasse. Wenn Sie es ein wenig ändern, erhalten Sie folgendes:

class Class1 
    def initialize 
     #instance method 
     puts self.class.edit 
    end 

    def self.edit 
     #class method 
     "ha" 
    end 
end 

c= Class1.new