使用"where"语法在Julia中参数化函数

jII*_*jII 3 julia

阅读关于参数化方法的Julia 文档,我不能为我的生活找出这两个定义之间的区别

julia> function f{T<:Real}(x::T)
    println("$x with type $T")
end


julia> function g(x::T) where {T<:Real}
    println("$x with type $T")
end
Run Code Online (Sandbox Code Playgroud)

任何有关这两个定义之间语义差异的指导都将受到高度赞赏.

Chr*_*kas 7

对于后者,前者被弃用(在大多数情况下).where替换v0.7及之后的旧语法,第一个将不存在于1.0中.

内部构造函数是一个例外.第一种语法仍然存在.但在这种情况下,类型参数意味着非常不同.示例:Array{Float64,2}()内部构造函数接收来自用户的参数.之前这是令人困惑的,因为类型参数对于这些不同的构造具有双重含义,但现在这种参数化方式仅存在于内部构造函数中,并且仅表示此,而其他所有使用where.