我刚接触Julia,但我并没有找到一份关于where
的解释能够让我完全理解。所以我理解,例如:function f(x::T, y::T) where {T<:Number} = true
要求x和y参数都必须是某种数值类型。
然而,还有其他函数看起来像 function f(X::AbstractMatrix{T}) where T
没有指定T应该是什么类型。有人能解释一下这是在做什么,以及我何时需要使用这种语法吗?
我刚接触Julia,但我并没有找到一份关于where
的解释能够让我完全理解。所以我理解,例如:function f(x::T, y::T) where {T<:Number} = true
要求x和y参数都必须是某种数值类型。
然而,还有其他函数看起来像 function f(X::AbstractMatrix{T}) where T
没有指定T应该是什么类型。有人能解释一下这是在做什么,以及我何时需要使用这种语法吗?
where T
没有其他内容,只是在其他的情况下等同于where {T<:Any}
,换句话说,它对所有的T
都成立,但是Julia需要你写一些东西来定义T
。
julia> mytypeof(x::T) where {T} = T
mytypeof (generic function with 1 method)
julia> mytypeof(1)
Int64
julia> mytypeof(1.0)
Float64
function f(x::AbstractMatrix)
和function f(x::AbstractMatrix{T}) where T
之间有什么区别呢? - DFLT
。就这样。 - mbauman