複数

複数節関数 の Elixir

72個の演習

複数節関数について

Elixirでは、1つの関数に複数の節を持たせることができます。これは、関数の入力をパターンマッチングしたり、ガードを使ったりすることで実現します。

# 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は、いくつの節を持っていても、1つの関数として扱われます。

GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

複数節関数を学習する

練習はロックされています

複数節関数を練習するには、あと10個の演習のロックを解除してください