如何调用超类型方法?

时间:2019-07-04 09:01:22

标签: inheritance types julia

我必须遵循示例性的类型结构

abstract type bla end
abstract type blup <: bla end

mutable struct Ablup <: blup
   a::Real
end

mutable struct Bblup <: blup
    b::Real
end


init(obj::bla) = println("bla")
init(obj::blup) = println("blup")
init(obj::Ablup) = println("Ablup")
init(obj::Bblup) = println("Bblup")

testA = Ablup(1)
testB = Bblup(1)

init(testA)
init(testB)

如何调用bla的{​​{1}}和blup实现? 例如。如果我想扩展超级类型方法

1 个答案:

答案 0 :(得分:7)

使用invoke函数:

julia> invoke(init, Tuple{bla}, testA)
bla

julia> invoke(init, Tuple{bla}, testB)
bla

julia> invoke(init, Tuple{blup}, testA)
blup

julia> invoke(init, Tuple{blup}, testB)
blup