Мне нужно следовать примерной структуре типов
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 и blup реализацию init?Например, если я хочу расширить метод super type
bla
blup
init
Используйте функцию invoke:
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