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