Я использую super
для передачи аргументов родительскому методу initialize
, который по умолчанию не вызывается. Вот как это выглядит. (Обратите внимание на использование super
на последних двух аргументов)Инициализировать модуль переопределения класса Ruby
module Pet
def initialize name, is_pet
@is_pet = is_pet
if is_pet
@name = name
else
@name = "Unnamed"
end
end
def pet?
return @is_pet
end
def get_name
return @name
end
end
class Dog
include Pet
def initialize tricks, name, is_pet
@tricks = tricks
super name, is_pet
end
def get_tricks
return @tricks
end
end
Вот что я могу делать с ним:
d = Dog.new ["roll", "speak", "play dead"], "Spots", true
d.pet? #=> true
d.get_tricks #=> ["roll", "speak", "play dead"]
d.get_name #=> "Spots"
Он отлично работает, но я просто интересно, если есть лучший способ сделай это.
Спасибо, очень полезно – hexagonest