當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Elixir Function用法及代碼示例

Elixir語言中 Function 相關用法介紹如下。

一組用於處理函數的函數。

匿名函數通常使用 fn 創建:

iex> add = fn a, b -> a + b end
iex> add.(1, 2)
3

匿名函數也可以有多個子句。所有子句都應該期望相同數量的參數:

iex> negate = fn
...>   true -> false
...>   false -> true
...> end
iex> negate.(false)
true

捕獲運算符

也可以使用捕獲操作符 Kernel.SpecialForms.&/1 捕獲公共模塊函數並像匿名函數一樣傳遞它們:

iex> add = &Kernel.+/2
iex> add.(1, 2)
3

iex> length = &String.length/1
iex> length.("hello")
5

要捕獲當前模塊中的定義,您可以跳過模塊前綴,例如 &my_fun/2 。在這些情況下,捕獲的函數可以是公共的(def)或私有的(defp)。

捕獲運算符也可用於創建至少需要一個參數的匿名函數:

iex> add = &(&1 + &2)
iex> add.(1, 2)
3

在這種情況下,使用捕獲運算符與使用 fn 沒有什麽不同。

內部和外部函數

我們說指向駐留在模塊中的定義的函數,例如 &String.length/1 ,是外部函數。所有其他函數都是本地的,它們總是綁定到定義它們的文件或模塊。

除了此模塊中用於處理函數的函數之外, Kernel 還有一個 apply/2 函數,它調用具有動態參數數量的函數,以及 is_function/1 is_function/2 ,分別檢查給定值是否是給定數量的函數或函數。

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。