如何将字典传递给带有关键字参数的函数?
Posted
技术标签:
【中文标题】如何将字典传递给带有关键字参数的函数?【英文标题】:How to pass a Dict to a function with Keyword arguments? 【发布时间】:2021-12-06 08:06:24 【问题描述】:假设我有这个Dict
:
d=Dict("arg1"=>10,"arg2"=>20)
还有这样的功能:
function foo(;arg1,arg2,arg3,arg4,arg5)
#Do something
end
如何调用函数并将Dict
d 中的参数作为函数的参数传递?
我知道我可以做到:
foo(arg1=d["arg1"],arg2=d["arg2"])
但是有什么方法可以自动执行此操作吗?我的意思是一种找出 Dict 中定义了哪些参数并将其自动传递给函数的方法。
【问题讨论】:
【参考方案1】:带有Symbol
键的字典可以直接splat
ted进入函数调用:
julia> d = Dict(:arg1 => 10, :arg2 => 12)
DictSymbol, 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
中的元素被解释为关键字参数,而不是恰好是Pair
s 的位置参数。
【讨论】:
请注意,分号对于被解释为关键字参数很重要 流畅的 splatting 是 Julia 最令人惊奇的事情之一。了解非常重要。以上是关于如何将字典传递给带有关键字参数的函数?的主要内容,如果未能解决你的问题,请参考以下文章