Есть ли хороший способ разрешить функции игнорировать неподдерживаемые аргументы ключевого слова?
fopts = [:kw1]
opts = Dict(:kw1=>:symb1, :kw2=>:symb2)
function f(; kw1 = :symb)
return kw1
end
f(;opts...)
бросит METHOD ERROR
Я мог бы обернуть это примерно так, но тогда мне все равно нужно знать, какие kwargs f
будут поддерживать?
function f2(fopts; kwargs)
f(; Dict(key=>get(opts, key, 0) for key in fopts)...)
end
Я упускаю способ обойти это. Не то чтобы суетиться, если есть потеря производительности, поскольку я предполагаю, что их, возможно, нужно как-то посмотреть. Есть ли хороший способ узнать, что kwargs f
принимает программно?
f(x; kwargs...) = (kwargs = Dict(kwargs); ...)
и просто использовать ключевые слова, которые ваша функция должна поддерживать, и игнорировать остальные. - person tim   schedule 03.03.2017fopts=methods(methods(f).mt.kwsorter).mt.defs.func.lambda_template.slotnames
. я думаю, должен быть чистый способ сделать это. - person Gnimuc   schedule 03.03.2017getkwargs
... - person Alexander Morley   schedule 03.03.2017