如何将字典作为关键字参数传递给函数?

6

假设我有这个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"])

但是有没有自动化的方法呢?我的意思是一种找出哪些参数在字典中已定义并自动传递给函数的方法。
1个回答

7

具有 Symbol 键的字典可以直接用于函数调用中:

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中的元素被解释为关键字参数而不是意外地成为Pair的位置参数。

3
请注意,分号在解释为关键字参数时很重要。 - MarcMush
流畅的展开操作符是 Julia 中最令人惊叹的事情之一,学习它非常重要。 - Ted Dunning

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接