【らむだしき】

ラムダ式 とは?

💡 使い捨ての「名前のない小さな関数」
📌 このページのポイント
ラムダ式 — 通常の関数との比較 通常の関数定義 def add(x, y): return x + y 名前付き・複数行OK ラムダ式 lambda x, y: x + y 無名・1行で簡潔に書ける ラムダ式の活用シーン ソートのキー sort(key=lambda...) コールバック イベント処理に渡す map / filter リスト操作を簡潔に
ラムダ式のイメージ
ひよこ ひよこ

ラムダ式って普通の関数と何が違うの?

ペンギン先生 ペンギン先生

名前がないことと、その場で書ける手軽さだよ。「numbers.map(x => x * 2)」のように、関数を書いて渡したいだけのときにわざわざfunctionに名前をつけなくていい。コードが短くなって読みやすくなる。

ひよこ ひよこ

アロー関数はいつ使えばいいの?

ペンギン先生 ペンギン先生

コールバックや一時的な変換処理に向いてる。ただし、オブジェクトメソッドには向かないことがある。アロー関数はthisを自分では持たず、定義した場所の外のthisをそのまま使うから、オブジェクトメソッドとして書くと意図しないthisを参照することがある。

ひよこ ひよこ

ラムダ計算って何?

ペンギン先生 ペンギン先生

1930年代に数学者が考えた「関数を形式的に表す理論」だよ。プログラミング言語の理論的な基盤になっている。「λx.x+1」のように書く。今のプログラミングに直接使うものじゃないけど、関数型言語の多くがこの考え方に基づいてる。

ひよこ ひよこ

アロー関数の「this」の問題ってどういうこと?

ペンギン先生 ペンギン先生

通常のfunctionは呼び出された方法によってthisが変わる。でもアロー関数はthisを「字句的に束縛」する。つまり書いた場所のthisを固定で使う。Reactのクラスコンポーネントでイベントハンドラをアロー関数で書く理由はここにある。逆にVue.jsのOptions APIでdataやmethodsをアロー関数で書くと、thisがVueインスタンスにならないバグが起きる。「どちらの関数スタイルを使うか」はフレームワークの実装に依存する繊細な問題なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ラムダ式って出てきたら「その場で書く使い捨ての小さな関数」と思えばだいたいOK!
📖 おまけ:英語の意味
「Lambda Expression」 = ラムダ式・無名関数
💬 数学のラムダ計算(λ-calculus)に由来。Alonzo Churchが考案した関数の形式的な表現方法から来ている
← 用語集にもどる