我使用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