Julia 关键字参数别名

Julia 关键字参数别名,julia,Julia,允许关键字参数使用别名的好方法是什么。假设我想要这样的界面: function f(a, b; k1=1, k2=2) println(a, b) println(k1, k2) end function f(a, b; key1=1, key2=2) println(a, b) println(key1, key2) end function f(a, b; kw1=1, kw2=2) println(a, b) println(kw1, k

允许关键字参数使用别名的好方法是什么。假设我想要这样的界面:

function f(a, b; k1=1, k2=2)
    println(a, b)
    println(k1, k2)
end

function f(a, b; key1=1, key2=2)
    println(a, b)
    println(key1, key2)
end

function f(a, b; kw1=1, kw2=2)
    println(a, b)
    println(kw1, kw2)
end

function f(a, b; keyword1=1, keyword2=2)
    println(a, b)
    println(keyword1, keyword2)
end

因此,您可以调用f1,2,kw1=3,kw2=4或f1,2,keyword1=3,keyword2=4并运行相同的函数。

我确实建议避免这种情况,但您可以按关键字定义顺序从左到右将关键字级联在一起:

julia> function f(a, b; k1=1, k2=2, key1=k1, key2=k2, keyword1=key1, keyword2=key2)
           println(a, b)
           println(keyword1, keyword2)
       end
f (generic function with 1 method)

julia> f(1,2,k1=3,k2=4)
12
34

julia> f(1,2,key1=3,k2=4)
12
34

julia> f(1,2,key1=3,keyword2=4)
12
34
请注意,您在定义中设置了优先顺序:

julia> f(1,2,key1=3,k1=4)
12
32

我真的建议您避免这样做,但您可以按关键字的定义顺序从左到右将关键字级联在一起:

julia> function f(a, b; k1=1, k2=2, key1=k1, key2=k2, keyword1=key1, keyword2=key2)
           println(a, b)
           println(keyword1, keyword2)
       end
f (generic function with 1 method)

julia> f(1,2,k1=3,k2=4)
12
34

julia> f(1,2,key1=3,k2=4)
12
34

julia> f(1,2,key1=3,keyword2=4)
12
34
请注意,您在定义中设置了优先顺序:

julia> f(1,2,key1=3,k1=4)
12
32

我认为最好为函数编写好的文档字符串。如果您坚持,那么您希望如何处理混合别名类型f1,2、kw1=3、关键字2=4或歧义f1,2、kw1=3、关键字1=4?一个原因是我对如何将一个关键字指向另一个关键字感兴趣,这样就可以通过调用另一个方法来替换已弃用的关键字。k1、关键字1和关键字1可以互换;k1=1,key1=2应该使用值2,因为我认为v0.6中引入的关键字args可以复制。IMHO为函数编写良好的文档字符串可能更好。如果您坚持,那么您希望如何处理混合别名类型f1,2、kw1=3、关键字2=4或歧义f1,2、kw1=3、关键字1=4?一个原因是我对如何将一个关键字指向另一个关键字感兴趣,这样就可以通过调用另一个方法来替换已弃用的关键字。k1、关键字1和关键字1可以互换;k1=1,key1=2应该使用值2,因为我认为v0.6中引入的关键字args可以复制。