匿名函数
箭头语法
可以使用 ->
语法创建匿名函数。这对于将函数传递给高阶函数 (例如 map
函数 )非常有用。下面的函数计算数组 A
中每个数字的平方。
squareall(A) = map(x -> x ^ 2, A)
使用此功能的一个示例:
julia> squareall(1:10)
10-element Array{Int64,1}:
1
4
9
16
25
36
49
64
81
100
多行语法
可以使用 function
语法创建多行匿名函数。例如,以下示例计算第一个 n
数字的阶乘 ,但使用匿名函数而不是内置的 factorial
。
julia> map(function (n)
product = one(n)
for i in 1:n
product *= i
end
product
end, 1:10)
10-element Array{Int64,1}:
1
2
6
24
120
720
5040
40320
362880
3628800
阻止语法
因为将匿名函数作为函数的第一个参数传递是很常见的,所以有一个 do
块语法。语法
map(A) do x
x ^ 2
end
相当于
map(x -> x ^ 2, A)
但前者在许多情况下可能更清晰,特别是如果在匿名函数中进行了大量计算。由于资源管理的原因,do
块语法对于文件输入和输出特别有用。