🦤

Elixir の無名関数①:基礎知識 -- YouTube チャンネル daimon.ex 第5回解説

2024/05/14に公開

動画

https://www.youtube.com/watch?v=mc4ZKW3cnFw

Elixir の無名関数

動画でフリップを用いて紹介した Elixir の無名関数の例がこれです:

fn a, b -> a + b end

外形的に見ると Elixir の無名関数は次の特徴を持ちます:

  • fn で始まり end で終わる。
  • 途中に右矢印のように見える記号(->)がある。
  • -> の左側には無名関数に与えられる仮引数の列をコンマ区切りで並べる。
  • -> の右側には無名関数の本体を置く。

仮引数の列をかっこで囲んでもいいのですが、囲まないのが標準的です。

無名関数を呼び出す

2枚目のフリップに書かれていたコードは、次の通りです:

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

無名関数は整数とか文字列とかと同じように変数にセットできます。そして、変数の後ろにドット記号を置き、カッコで囲んで引数を渡すと、変数にセットされた無名関数を呼び出せます。

上記のコードを評価すると、変数 result には 3 がセットされます。

【参考】他の言語における無名関数

参考までに直前に紹介したコードと同等のものを他の言語で記述してみます。

JavaScript

add = (a, b) => a + b
result = add(1, 2)

Python

add = lambda a, b: a + b
result = add(1, 2)

Ruby

add = ->(a, b) { a + b }
result = add.(1, 2)

※ 投稿時には Ruby 版のコードの2行目を result = add.call(1, 2) のように書いていましたが、読者の方より「Elixir と同様にドットのみで呼び出せる」との指摘を受け、書き換えました。

Discussion