軌道
/
Elixir
Elixir
/
課程大綱
/
多子句函式
多子

多子句函式 在 Elixir

72 個練習

關於 多子句函式

在 Elixir 中,一個函式可以有多個子句。做法是對函式的引數進行模式匹配,並使用守衛。

# pattern matching the argument
def number(7) do
  "Awesome, that's my favorite"
end

# using a guard
def number(n) when is_integer(n) do
  "That's not my favorite"
end

def number(_n) do
  "That's not even a number!"
end
  • 使用多個函式子句把控制邏輯從函式中抽離出來。
  • 子句會依序嘗試,從原始碼檔案的頂端到底端,直到有一個成功為止。
  • 如果沒有任何子句成功,BEAM VM 會引發FunctionClauseError。
  • 如果引數變數沒有用在函式主體或守衛中,就應該在名稱前加上_,否則編譯器會發出警告。
  • 匿名函式也可以有多個子句。
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

請注意,多個子句的函式不應該和你在其他程式語言裡認識的函式多載混為一談。在 Elixir 中,函式只以名稱和元數來識別,而不是引數的型別(因為沒有靜態型別)。範例中的number/1被視為單一函式,不論它有多少個子句。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 多子句函式

練習已鎖定

再解鎖 10 個練習,就能練習 多子句函式