Vector{AbstractString} 函数参数不会接受 julia 中的 Vector{String} 输入



Julia中的以下代码:

function foo(a::Vector{AbstractString})  
end
foo(["a"])

给出以下错误:

ERROR: MethodError: no method matching foo(::Array{String,1})
Closest candidates are:
  foo(::Array{AbstractString,1}) at REPL[77]:2

即使以下代码运行,如预期:

function foo(a::Vector{String})  
end
foo(["a"])

及更高兴,AbstractString通常与String匹配:

function foo(::AbstractString)  
end
foo("a")

如果我有String元素,我该如何调用Vector{AbstractString}参数?

您需要像这样编写功能签名:

function foo{S<:AbstractString}(a::Vector{S})
    # do stuff
end

在Julia 0.6和更新,也可以写

function foo(a::Vector{<:AbstractString})
    # do stuff
end

这是朱莉娅(Julia)参数类型不变性的结果。有关更多详细信息,请参见手册中的类型。

相关内容

  • 没有找到相关文章

最新更新