Шаблон, на который ссылается Engineero, является самым чистым, но он предполагает позиционный аргумент. Если вы настаиваете на использовании ключевого аргумента (как вы делаете в своем вопросе) для вашей функции, используйте:
function f(x; y::Union{Vector, Nothing}=nothing)
if y === nothing
# do something
else
# do something else
end
end
Обычно это необходимо, только если у вас много ключевых аргументов, иначе я бы рекомендовал определять методы с различными сигнатурами позиционных параметров.
Конечно, вполне нормально использовать этот шаблон с nothing
также для позиционных аргументов, если вы находите его предпочтительным.