朱莉娅:函数的可选参数类型为Vector,但默认为null?

时间:2018-08-28 14:34:51

标签: function null arguments julia default

我有一个函数f(x)。我希望该函数具有类型为vector的可选参数。例如,f(x; y::Vector=[1,2,3])。但是,我希望默认值是其他值(空?缺少?无效?),以便我可以轻松地捕获它并对其作出反应。

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

做类似事情的最朱利安方法是什么?

1 个答案:

答案 0 :(得分:5)

Engineero在注释中引用的模式是最干净的,但是它假定一个位置自变量。如果您坚持要在函数中使用关键字参数(如您在问题中所做的那样),请使用:

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

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

当然,如果可以使用此模式,也可以将nothing与该模式一起用于位置参数。