我是 Julia 的新手,对 R 有更多的经验,所以对于那些熟悉两者的人,这里是我试图在 Julia 中复制的一段 R 代码。
f = function(a, b = 1, c = 2) a + 2*b = 3*c
g = function(d, ...) 5 + f(d, ...)
Run Code Online (Sandbox Code Playgroud)
有了这个,调用 将是有效的g(1),它将使用 f 的默认值进行评估,或者您可以指定g(1, b = 3)org(1, c = 4, b = 2)或其他任何内容。重点当然是,只要指定了名称,您就可以将可选参数的任何排列传递给 f,而顺序无关紧要。
在 Julia 中,我在这样做时遇到了一些麻烦,因为 varargs 的工作方式有点不同。我知道您可以将无限的参数列表以元组(例如,function g(d::Number, f_args::NamedTuple)的形式传递给函数,但它似乎不适用于可选的关键字参数。就好像在这条线的某个地方,f_args元组失去了它的名字,并且f因为它看到 3 个没有名字的参数并且不知道选择哪个方法而感到困惑?
如果确实可能的话,如果有人能告诉我如何在 Julia 中做到这一点,我将不胜感激。我想保留这些参数的可选性,以及它们的名称。我还希望能够保留它们的类型(即,我希望 的每个参数f只有在它们适合正确的类型时才可以接受,这当然通常在 Julia 中使用::标头中的运算符完成)。
PS - 就我的问题而言,重写g …