Jon*_*nas 2 parameters dictionary julia
我写了一个函数,它应该带一个Dict{String, <anything>}(所以有任何值)。但是,当我指定所需的参数时,Dict{String, Any}该函数仅采用显式的Dict{String, Any}. 有没有办法让 aDict取任何值?
function funky(arg::Dict{String, Any})
return "Oh, hi mark."
end
Run Code Online (Sandbox Code Playgroud)
julia> funky(Dict("Oh" => [0 1; 2 3]))
ERROR: MethodError: no method matching funky(::Dict{String,Array{Int64,2}})
Closest candidates are:
funky(::Dict{String,Any})
julia> funky(Dict{String, Any}("Oh" => [0 1; 2 3]))
"Oh, hi mark."
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您像在第一个版本的 funky 中那样编写它,则该函数不需要任何类型,而是完全类型Any,而在以下定义中,
julia> function funky(arg::Dict{String, <:Any})
return "Oh, hi mark."
end
julia> funky(Dict("Oh" => [0 1; 2 3]))
"Oh, hi mark."
Run Code Online (Sandbox Code Playgroud)
Any接受任何子类型(所以所有类型),这是由于子类型 operator <:。你在你的第二个版本中隐含地做到了这一点。所以总结一下,主要的区别是:
julia> typeof([0 1; 2 3]) == Any # first verion
false
julia> typeof([0 1; 2 3]) <: Any # second version
true
Run Code Online (Sandbox Code Playgroud)