2 Stimmen

Rufen Sie die Elternmethode in der Kindklasse auf

Ich lerne das Objektmodell von Ruby. Ich habe dieses Skript geschrieben:

#/usr/bin/ruby

module MyModule

  class MyBase
    def class_b_method
      puts "class_b_method wurde aufgerufen"
    end
  end

  class MyClass < MyBase
    attr_accessor :name

    class_b_method

    def set_name(name)
      @name = "Mein Name ist #{name}"
    end

    def display_name
      return @name
    end    
  end   
end

obj = MyModule::MyClass.new
obj.set_name "Martin"
puts obj.display_name

Beim Ausführen des obigen Codes erhalte ich diesen Fehler:

module.rb:13: undefined local variable or method `class_b_method' for MyModule::MyClass:Class (NameError)

Ich versuche, die Elternmethode in der Klasse MyClass aufzurufen. Was mache ich falsch?

2voto

Arup Rakshit Punkte 113145

Innerhalb der Klasse MyClass ist self MyClass. Aber Sie definieren class_b_method als Instanzmethode innerhalb der Klasse MyBase, d.h. eine Methode, die von den Instanzen der Klasse MyBase aufgerufen werden kann, kann nicht von der Klasse selbst aufgerufen werden. Daher wirft self.class_b_method einen Fehler. Um Ihren Code funktionsfähig zu machen, schreiben Sie die Methode wie folgt:

class MyBase
  def self.class_b_method
      puts "class_b_method aufgerufen"
  end
end

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X