作為引數的函式
函式是 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
功能。還存在許多其他內建的高階函式。
高階函式非常強大。有時,在處理高階函式時,正在執行的操作變得不重要,程式可能變得非常抽象。組合器是高度抽象的高階函式系統的示例。