在 Julia 中,抽象类型的分派与抽象类型的参数子集之间有什么区别?
In Julia what's the difference between dispatching on abstract types versus parametric subset of abstract types?
之间是否存在功能或性能差异
myfunction(x::Real)
,以及
myfunction(x::T) where {T<:Real}
?
在这种情况下,Real
是一个抽象类型,它显然具有具体的子类型,如 Float64
和 Int
。
有理由偏爱其中之一吗?
最大的区别是可以在函数定义中引用T
。另一个区别是 Function
s 和 Vararg
s(但没有其他类型,myfunction(x::T) where {T}
强制专业化。
除此之外,完全一样
myfunction(x::Real)
,以及myfunction(x::T) where {T<:Real}
?
在这种情况下,Real
是一个抽象类型,它显然具有具体的子类型,如 Float64
和 Int
。
有理由偏爱其中之一吗?
最大的区别是可以在函数定义中引用T
。另一个区别是 Function
s 和 Vararg
s(但没有其他类型,myfunction(x::T) where {T}
强制专业化。
除此之外,完全一样