获取 Julia 方法的关键字名称

Stu*_*art 7 keyword-argument julia

我有一个类似的功能

function f(a = 1; first = 5, second = "asdf")
    return a
end
Run Code Online (Sandbox Code Playgroud)

有没有办法以编程方式返回带有关键字参数名称的向量。就像是:

kwargs(f)
# returns [:first, :second]
Run Code Online (Sandbox Code Playgroud)

我意识到这可能会因函数名的多种方法而变得复杂。但我希望如果指定了确切的方法,这仍然是可能的。例如:

kwargs(methods(f).ms[1])
# returns [:first, :second]
Run Code Online (Sandbox Code Playgroud)

Prz*_*fel 5

只需使用 Base.kwarg_decl()

julia> Base.kwarg_decl.(methods(f))
2-element Vector{Vector{Symbol}}:
 []
 [:first, :second]
Run Code Online (Sandbox Code Playgroud)

如果您还需要第一个参数a,您也可以尝试:

julia> Base.method_argnames.(methods(f))
2-element Vector{Vector{Symbol}}:
 [Symbol("#self#")]
 [Symbol("#self#"), :a]
Run Code Online (Sandbox Code Playgroud)