Подтвердить что ты не робот

Как передать tuple в качестве аргументов функции

Получена функция, которая принимает три аргумента.

f(a, b, c) = # do stuff

И еще одна функция, возвращающая кортеж.

g() = (1, 2, 3)

Как передать кортеж в качестве аргументов функции?

f(g()) # ERROR
4b9b3361

Ответ 1

Используя пример Nanashi, ключ - это ошибка, когда вы вызываете f(g())

julia> g() = (1, 2, 3)
g (generic function with 1 method)

julia> f(a, b, c) = +(a, b, c)
f (generic function with 1 method)

julia> g()
(1,2,3)

julia> f(g())
ERROR: no method f((Int64,Int64,Int64))

Это означает, что это дает кортеж (1, 2, 3) в качестве входа в f без его распаковки. Чтобы распаковать его, используйте многоточие.

julia> f(g()...)
6

Соответствующий раздел в руководстве Julia находится здесь: http://julia.readthedocs.org/en/latest/manual/functions/#varargs-functions

Ответ 2

Используйте apply.

julia> g() = (1,2,3)
g (generic function with 1 method)

julia> f(a,b,c) = +(a,b,c)
f (generic function with 1 method)

julia> apply(f,g())
6

Сообщите нам, если это поможет.