匿名函式

箭頭語法

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