【发布时间】:2020-08-06 14:19:23
【问题描述】:
考虑 Base 中的一个现有函数,它接收一些抽象类型 T 的可变数量的参数。我已经定义了一个子类型S<:T,并且想编写一个方法,如果任何参数是我的子类型S,它就会分派。
例如,考虑函数Base.cat,其中T 是AbstractArray,S 是一些MyCustomArray <: AbstractArray。
期望的行为:
julia> v = [1, 2, 3];
julia> cat(v, v, v, dims=2)
3×3 Array{Int64,2}:
1 1 1
2 2 2
3 3 3
julia> w = MyCustomArray([1,2,3])
julia> cat(v, v, w, dims=2)
"do something fancy"
尝试:
function Base.cat(w::MyCustomArray, a::AbstractArray...; dims)
pritnln("do something fancy")
end
但这只有在第一个参数是 MyCustomArray 时才有效。
实现这一目标的优雅方法是什么?
【问题讨论】: