作為引數的函式

函式是 Julia 中的物件。與任何其他物件一樣,它們可以作為引數傳遞給其他函式。接受函式的函式稱為高階函式。

例如,我們可以通過將函式 f 作為第一個引數來實現標準庫的 foreach 函式的等價物。

function myforeach(f, xs)
    for x in xs
        f(x)
    end
end

我們可以測試這個函式確實像我們期望的那樣工作:

julia> myforeach(println, ["a", "b", "c"])
a
b
c

通過將函式作為第一個引數,而不是後面的引數,我們可以使用 Julia 的 do 塊語法。do 塊語法只是將匿名函式作為函式的第一個引數傳遞的便捷方式。

julia> myforeach([1, 2, 3]) do x
           println(x^x)
       end
1
4
27

我們上面的 myforeach 的實現大致相當於內建的 foreach 功能。還存在許多其他內建的高階函式。

高階函式非常強大。有時,在處理高階函式時,正在執行的操作變得不重要,程式可能變得非常抽象。組合器是高度抽象的高階函式系統的示例。