【らむだしき】

ラムダ式 とは?

最終更新:
💡 小さな処理を、その場で書いて渡そう

関数の処理を、関数名を宣言せず式として書く構文。PythonのlambdaやJavaのラムダ式などがあり、JavaScriptではアロー関数を同様の用途に使える。細かな規則は言語ごとに異なる。

📌 このページのポイント
ラムダ式:その場で処理を書くPython:どちらも数を2倍にする名前付きの関数def twice(x): return x * 2関数名は twiceラムダ式lambda x: x * 2一つの式で書くJavaScript:mapに処理を渡す例[1, 2, 3].map(x => x * 2)[2, 4, 6]
書き方の規則は言語ごとに違います。作った関数は保存して繰り返し使うこともできます。
ひよこ ひよこ
普通の関数と何が違うの?
ペンギン先生 ペンギン先生
名前付きの関数を別に宣言する代わりに、必要な場所で処理を書けるよ。Pythonならlambda x: x * 2で「受け取った数を2倍にする関数」になる。コールバックなど、関数を渡したい場面で使えるんだ
ひよこ ひよこ
一度使ったらなくなる関数なの?
ペンギン先生 ペンギン先生
使い捨て専用ではないよ。作った関数を変数に保存して、何度も呼ぶこともできるんだ。処理が長くなったり、何をするか名前で説明したくなったりしたら、通常の関数定義を選ぶと読みやすいね
ひよこ ひよこ
どの言語でも、一行だけで書くの?
ペンギン先生 ペンギン先生
Pythonのlambdaは本体を一つの式に限るよ。Javaのラムダ式やJavaScriptのアロー関数は、複数の文を含むブロックも書ける。ラムダ式なら必ず一行というわけではなく、言語ごとの構文を確認しよう
ひよこ ひよこ
JavaScriptなら全部アロー関数に替えていい?
ペンギン先生 ペンギン先生
通常のfunctionと完全に同じではないよ。アロー関数は自分自身のthisを持たず、外側のthisを使う。呼び出したオブジェクトをthisとして使いたいメソッドなどでは、書き換えると意味が変わることがあるんだ
ひよこ ひよこ
使いどころの簡単な例がほしい!
ペンギン先生 ペンギン先生
JavaScriptなら[1, 2, 3].map(x => x * 2)で[2, 4, 6]を得られるよ。配列の各要素をどう変えるか、その処理を関数として渡しているんだ。短くすることだけでなく、処理の意図が読み取れるかも大切だね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ラムダ式」って出てきたら「その場で関数の処理を書ける式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Lambda Expression」 = ラムダ式
💬 lambdaや矢印など、書き方は言語ごとに違うよ。関数名を宣言せずに処理を書くという、プログラミングでの使い方をまず覚えよう

参考資料

← 用語集にもどる