Julia:具有 Vector 类型的可选参数但默认为 null 的函数?

Julia: function with optional argument of type Vector but default to null?

我有一个函数f(x)。我希望该函数有一个向量类型的可选参数。例如,f(x; y::Vector=[1,2,3])。但是,我希望默认值是其他值(null?missing?void?),这样我就可以很容易地捕捉到它并对其做出反应。

在 R 中,我会说 function(x, y=NULL){},然后是 if(is.null(y)){whatever}

做类似事情最有效的方法是什么?

Engineero 在评论中引用的模式是最简洁的,但它假定了一个位置参数。如果您坚持在函数中使用关键字参数(就像您在问题中所做的那样),请使用:

function f(x; y::Union{Vector, Nothing}=nothing)
    if y === nothing
        # do something
    else
        # do something else
    end
end

这通常只有在您有很多关键字参数时才需要,否则我建议使用不同的位置参数签名来定义方法。

当然,如果您觉得更好,也可以将此模式与 nothing 一起用于位置参数。