匿名函式
箭頭語法
可以使用 ->
語法建立匿名函式。這對於將函式傳遞給高階函式 (例如 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
塊語法對於檔案輸入和輸出特別有用。