🦤
Elixir の無名関数①:基礎知識 -- YouTube チャンネル daimon.ex 第5回解説
動画
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