Ruby(2.5)中是否有一种方法super可以以与继承相同的方式调用包含模块中定义的方法?
我的意思是,假设我有以下内容
class Parent
def name
"parent"
end
end
class Child < Parent
def name
"my parent is #{super}"
end
end
Run Code Online (Sandbox Code Playgroud)
当我打电话时Child.new.name,我明白了my parent is parent.
如何在以下情况下实现同样的目标?
module Parent
def name
"parent"
end
end
class Child
include Parent
def name
"my parent is #{???}"
end
end
Run Code Online (Sandbox Code Playgroud)
我该怎么替换????
谢谢
小智 6
你仍然可以使用super:
module Parent
def name
"parent"
end
end
class Child
include Parent
def name
"my parent is #{super}"
end
end
Child.new.name # => "my parent is parent"
Run Code Online (Sandbox Code Playgroud)
当包含一个模块时,ruby会将这个模块添加到继承链中.
Child.ancestors # => [Child, Parent, Object, Kernel, BasicObject]
Run Code Online (Sandbox Code Playgroud)
因此,要求super在Child会调用相应的方法,它的祖先.