有没有一种好的方法让函数忽略不支持的关键字参数?
fopts = [:kw1]
opts = Dict(:kw1=>:symb1, :kw2=>:symb2)
function f(; kw1 = :symb)
return kw1
end
f(;opts...)
会抛出一个METHOD ERROR
我可以像这样包装它,但我仍然需要知道f
支持哪些kwargs参数?
function f2(fopts; kwargs)
f(; Dict(key=>get(opts, key, 0) for key in fopts)...)
end
我是否错过了绕过此问题的方法?如果有一些查找,我想象中可能需要一些性能损失,并不太担心。有没有一种良好的方式通过编程来查询kwargs f
接受什么参数。
f(x; kwargs...) = (kwargs = Dict(kwargs); ...)
,然后只使用你的函数应该支持的关键字,忽略其余的。 - timfopts=methods(methods(f).mt.kwsorter).mt.defs.func.lambda_template.slotnames
。我猜肯定有一种简洁的方法来实现这个。 - Gnimucgetkwargs
函数还有其他用途... - Alexander Morley