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

时间:2017-08-17 02:47:26

标签: julia

阅读朱莉娅documentation on parametric methods,我不能为我的生活找出这两个定义之间的区别

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

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

1 个答案:

答案 0 :(得分:7)

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

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