等效于任意函数的点前缀?

Equivalent of the dot prefix for an arbitrary function?

Julia 允许我在 arrays/matrices 上使用 .:

进行元素二元运算符
[1 2 3] .+ [3 2 1]
[1 2 3] .> [3 2 1]

是否有一种标准方法可以将任意函数 f 按元素应用于一对数组?

如果您只想对两个列表中的每对值应用二元函数,您可以使用 map:

f(x,y) = 2x - y^2

julia> map(f, [1, 2, 3], [3, 2, 1])
3-element Array{Int64,1}:
 -7
  0
  5

.+.> 运算符还具有广播单例维度的附加行为,如下所示:

julia> [1, 2, 3] .+ [-1 -2 -3]
3x3 Array{Int64,2}:
 0  -1  -2
 1   0  -1
 2   1   0

julia> rand(3,4) .+ [1, 2, 3]
3x4 Array{Float64,2}:
 1.73798  1.84132  1.12923  1.30192
 2.10961  2.17835  2.52779  2.3028
 3.16457  3.04659  3.67604  3.08869

julia> rand(3,4) .+ [1 2 3 4]
3x4 Array{Float64,2}:
 1.40294  2.31384  3.34001  4.60027
 1.13289  2.99275  3.50606  4.51049
 1.31486  2.7585   3.64655  4.59647

如果你也想要这种行为,你可以使用broadcast函数:

julia> broadcast(f, [1 2 3], [3, 2, 1])
3x3 Array{Int64,2}:
 -7  -5  -3
 -2   0   2
  1   3   5