I have two methods I want to write for a function. I expect both of them to be passed two SparseVector
s, but would like to keep it open for any type of Array
. I want the compiler to pick between the methods based on the eltype
, either an Integer
or a Rational
.
What is the best way to define these functions?
Does AbstractSparseArray
inherit AbstractArray
?
1 Like
you can use this structure as a format:
#for abstract types
function f(x::T) where T <: AbstractArray{T2,N} where {T2<:Integer,N}
return 1
end
#for concrete types
function f(x::T) where T <: AbstractArray{Float64,N} where N
return 2
end
if you are going to use only vectors, this is shorter:
#for abstract types
function f(x::T) where T <: AbstractVector{T2} where T2<:Integer
return 1
end
#for concrete types
function f(x::T) where T <: AbstractVector{Float64}
return 2
end
yes it does
2 Likes