在Anonymous Functions section下的朱莉娅手册中,提供的一个示例是(x,y,z)->2x+y-z
。
有人可以告诉我如何将一组参数传递给此函数吗?
说x=(1,2,3); y=(2,3,4); z=(1,3,5)
。
答案 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
设置的元组未实现*
函数。