我想在函数 $f$ 中计算一组向量(或元组),但 Julia 告诉我这是不可能的。
例如:如果我有一个元组数组p=[(1,1), (1,-1), (-1,1), (-1,-1)]和一个函数f(x,y)=x+y。我想计算一下f(p[1]) = f(1,1)= 2。但是 Julia 告诉我这些类型是不兼容的。
你能帮我吗?
你必须像这样生成一个元组:
julia> p=[(1,1), (1,-1), (-1,1), (-1,-1)]
4-element Array{Tuple{Int64,Int64},1}:
(1, 1)
(1, -1)
(-1, 1)
(-1, -1)
julia> f(x,y)=x+y
f (generic function with 1 method)
julia> f(p[1]...)
2
Run Code Online (Sandbox Code Playgroud)
您还可以定义一个高阶函数splat,它可以方便地包装任何函数并执行 splatting。这很有用,因为您可以例如广播这样的功能:
julia> splat(f) = x -> f(x...)
splat (generic function with 1 method)
julia> splat(f)(p[1])
2
julia> splat(f).(p)
4-element Array{Int64,1}:
2
0
0
-2
Run Code Online (Sandbox Code Playgroud)
或者,您可以f像这样定义函数:
julia> f((x,y),)=x+y
f (generic function with 1 method)
julia> f(p[1])
2
Run Code Online (Sandbox Code Playgroud)
现在你不必做泼溅了。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |