我经常在Julia看到类似下面的内容:
convert(::Type{Point{Float64}}, ::Float64)
(::
如何运作?这个术语是什么?
答案 0 :(得分:11)
您的答案可以在the Julia documentation for defining conversions中找到。引用(切换类型使其更易于阅读):
此方法的第一个参数的类型是singleton type,
Type{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)