2010-04-03 9 views
23

Mam klasy:Konstruktor nadrzędnymi

class One 
    def initialize; end 
end 

trzeba utworzyć nową klasę z własnego konstruktora jak ten:

class Two < One 
    def initialize(some) 
    puts some 
    super 
    end 
end 

Two.new("thing") 

ale kiedy uruchomić kod, mam błąd:

thing 
test.rb:10:in `initialize': wrong number of arguments (1 for 0) (ArgumentError) 

Odpowiedz

47

super w tym przypadku (bez nawiasów) jest specjalnym formularzem. Wywołuje metodę nadklasy z oryginalnymi parametrami.

Zamiast próbować nazywając

super() 
+1

Dokumenty: [nadklasą] (http://apidock.com/ruby/Class/superclass) w apidock –

Powiązane problemy