Julia:将多个参数传递给匿名函数

时间:2014-04-09 13:32:40

标签: arguments anonymous-function julia

Anonymous Functions section下的朱莉娅手册中,提供的一个示例是(x,y,z)->2x+y-z

有人可以告诉我如何将一组参数传递给此函数吗?

x=(1,2,3); y=(2,3,4); z=(1,3,5)

2 个答案:

答案 0 :(得分:5)

如果你将x,y和z定义为数组,那么你可以调用该函数并将它们传入:

fun = (x,y,z)->2x+y-z
x=[1,2,3]
y=[2,3,4]
z=[1,3,5]
fun(x, y, z)

给出结果:

3-element Array{Int64,1}:
 3
 4
 5

但是如果你想用元组做这个,根据你的例子,你需要使用map:

x=(1,2,3)
y=(2,3,4)
z=(1,3,5)
map(fun, x, y, z)

这给出了相同的结果,但这次是作为一个元组:

(3, 4, 5)

这是因为没有为元组定义*,+和 - 运算符,因此公式2x+y-z不起作用。使用map通过多次调用函数调用标量来解决这个问题。

答案 1 :(得分:3)

您必须将匿名函数分配给变量,以便调用它。

julia> fun = (x,y,z)->2x+y-z
(anonymous function)

julia> fun((1,2,3),(2,3,4),(1,3,5))
ERROR: no method *(Int64, (Int64,Int64,Int64))
 in anonymous at none:1

它不起作用,因为您为x设置的元组未实现*函数。