Объявление имени аргумента при вызове функции - PullRequest
3 голосов
/ 07 апреля 2020

В Julia 1.4.0 У меня есть следующая функция:

function output(W::Int64,F::Int64,P::Int64,S::Int64)
       return ((W-F+2*P)/S +1)
       end

Когда я ввожу следующую команду, вывод будет таким, как ожидалось

julia> output(28,5,0,1)
24.0

Теперь, чтобы быть уверенным какой аргумент есть что, я, что явно назвать их при вызове функции (что может быть полезно, если можно написать аргумент в другом порядке, если это возможно)

julia> output(W=28,F=5,P=0,S=1)
ERROR: MethodError: no method matching output(; W=28, F=5, P=0, S=1)
Closest candidates are:
  output(::Int64, ::Int64, ::Int64, ::Int64) at REPL[23]:2 got unsupported keyword arguments "W", "F", "P", "S"
  output(::Any, ::Any, ::Any, ::Any) at REPL[2]:2 got unsupported keyword arguments "W", "F", "P", "S"
Stacktrace:
 [1] top-level scope at REPL[25]:1

Возможен ли другой подобный подход

1 Ответ

3 голосов
/ 07 апреля 2020

Вы хотите использовать аргументы ключевого слова для своей функции (вы можете прочитать больше об аргументах ключевого слова в документации Julia )

Чтобы объявить вашу функцию с аргументами ключевого слова, вы должны сделать это (примечание точка с запятой перед аргументами):

function output(;W::Int64,F::Int64,P::Int64,S::Int64)
       return ((W-F+2*P)/S +1)
end

Затем вы можете запустить свою функцию так, как вы хотели:

julia> output(W=28,F=5,P=0,S=1)
24.0
...