如何将元组作为函数参数传递

AJc*_*dez 16 julia

有一个函数,需要三个参数.

f(a, b, c) = # do stuff
Run Code Online (Sandbox Code Playgroud)

还有另一个返回元组的函数.

g() = (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

如何将元组作为函数参数传递?

f(g()) # ERROR
Run Code Online (Sandbox Code Playgroud)

Gui*_*rza 29

使用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))
Run Code Online (Sandbox Code Playgroud)

这表明这将元组(1, 2, 3)作为输入f而不解包它.要打开包装,请使用省略号.

julia> f(g()...)
6
Run Code Online (Sandbox Code Playgroud)

Julia手册中的相关部分如下:http://julia.readthedocs.org/en/latest/manual/functions/#varargs-functions

  • 我更喜欢 `f(g()...)` 而不是 `apply`,我认为第一个在 Julia 中更惯用。 (2认同)
  • 文档似乎已经移动了。今天的链接是 https://docs.julialang.org/en/stable/manual/functions/#Varargs-Functions-1 (2认同)

Jer*_*ino 5

使用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
Run Code Online (Sandbox Code Playgroud)

如果这有帮助,请告诉我们。