如何传递一个字典与关键字参数的函数?



假设我有这个Dict:

d=Dict("arg1"=>10,"arg2"=>20)

和这样的函数:

function foo(;arg1,arg2,arg3,arg4,arg5)
#Do something
end

如何调用函数并将Dictd中的参数作为函数的参数传递?我知道我可以这样做:

foo(arg1=d["arg1"],arg2=d["arg2"])

但是有什么方法可以自动化这个吗?我的意思是一种方法,找出哪些参数在字典中定义,并自动传递给函数。

具有Symbol键的字典可以直接将splat写入函数调用中:

julia> d = Dict(:arg1 => 10, :arg2 => 12)
Dict{Symbol, Int64} with 2 entries:
:arg1 => 10
:arg2 => 12
julia> f(; arg1, arg2) = arg1 + arg2
f (generic function with 1 method)
julia> f(; d...)
22

注意函数调用中的分号,它确保d中的元素被解释为关键字参数,而不是恰好是Pairs的位置参数。