在Julia中插入关键字参数

在Julia中插入关键字参数,julia,Julia,我得到了形式的一个函数 f(;a=1, b=2, c=3, d=4) = ... 以及一个长度为4的向量,其中包含指示需要输入哪些关键字参数的布尔值,以及一个长度介于1和4之间的向量,以便输入到相应的插槽中(按顺序)。例如,我可能会 [true,false,true,false] [5,100] 因此,我希望对以下内容进行评估: f(a=5, c=100) 如何高效、优雅地执行此操作?您可以从(符号,任意)对列表中组合使用布尔索引、zip和关键字布局: 伟大的谢谢,我从没想过这能做到。这就

我得到了形式的一个函数

f(;a=1, b=2, c=3, d=4) = ...
以及一个长度为4的向量,其中包含指示需要输入哪些关键字参数的布尔值,以及一个长度介于1和4之间的向量,以便输入到相应的插槽中(按顺序)。例如,我可能会

[true,false,true,false]
[5,100]
因此,我希望对以下内容进行评估:

f(a=5, c=100)

如何高效、优雅地执行此操作?

您可以从(符号,任意)对列表中组合使用布尔索引、zip和关键字布局:


伟大的谢谢,我从没想过这能做到。这就是为什么我爱朱莉娅。。。你可以做任何你想做的事情,代码仍然可读!
julia> f(;a=1,b=2,c=3,d=4) = @show a,b,c,d
f (generic function with 1 method)

julia> ks = [:a,:b,:c,:d]
4-element Array{Symbol,1}:
 :a
 :b
 :c
 :d

julia> shoulduse = [true,false,true,false]
4-element Array{Bool,1}:
  true
 false
  true
 false

julia> vals = [5,100]
2-element Array{Int64,1}:
   5
 100

julia> kw = zip(ks[shoulduse], vals)
Base.Zip2{Array{Symbol,1},Array{Int64,1}}([:a,:c],[5,100])

julia> f(;kw...)
(a,b,c,d) = (5,2,100,4)
(5,2,100,4)