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
一起用于位置参数。
我有一个函数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
一起用于位置参数。