Julia函数头中的无名值是什么意思?

时间:2016-05-04 22:17:42

标签: julia

我经常在Julia看到类似下面的内容:

convert(::Type{Point{Float64}}, ::Float64)

(::如何运作?这个术语是什么?

1 个答案:

答案 0 :(得分:11)

您的答案可以在the Julia documentation for defining conversions中找到。引用(切换类型使其更易于阅读):

  

此方法的第一个参数的类型是singleton typeType{Point{Float64}},其唯一的实例是   Point{Float64}。因此,此方法仅在第一个时调用   参数是类型值Point{Float64}。注意使用的语法   对于第一个参数:参数名称在::之前被省略   符号,只给出了类型。 这是朱莉娅的语法   函数参数,其类型已指定但其值永远不会   在函数体中使用。在这个例子中,因为类型是a   单身人士,永远不会有任何理由在其中使用其价值   体。

(强调我的)

当尝试使用错误类型的参数调用函数时,您还会在错误消息中遇到foo(::SomeType)语法(毕竟您不能显示不存在的变量的参数名称) )。 E.g:

julia> foo(x::Bool) = 3
foo (generic function with 1 method)

julia> foo(5)
ERROR: `foo` has no method matching foo(::Int64)