Джулия: функция с необязательным аргументом типа Vector, но по умолчанию null? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть функция f(x). Я хотел бы, чтобы эта функция имела необязательный параметр типа вектор. Например, f(x; y::Vector=[1,2,3]). Тем не менее, я хотел бы, чтобы значением по умолчанию было что-то другое (null? Отсутствует? Void?), Чтобы я мог легко перехватить его и отреагировать на него.

В R я бы сказал function(x, y=NULL){}, а затем if(is.null(y)){whatever}.

Какой самый юлианский способ сделать нечто подобное?

1 Ответ

0 голосов
/ 28 августа 2018

Шаблон, на который ссылается Engineero, является самым чистым, но он предполагает позиционный аргумент. Если вы настаиваете на использовании ключевого аргумента (как вы делаете в своем вопросе) для вашей функции, используйте:

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

Обычно это необходимо, только если у вас много ключевых аргументов, иначе я бы рекомендовал определять методы с различными сигнатурами позиционных параметров.

Конечно, вполне нормально использовать этот шаблон с nothing также для позиционных аргументов, если вы находите его предпочтительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...