ドキュメントやサンプルを読んでいるときに、変数に無名関数を割り当てることができるという考えがよく出てきます。新しい機能を定義するのではなく、なぜこれを実際に行うのですか?変数に無名関数を割り当てるのはなぜですか?
いくつかの例:
のClojure/Lispの
(def add2
(fn [a] (+ 2 a))
(add2 4) ;; => 6
パイソン
add2 = lambda e: e + 2
add2(3) # => 5
は、これらは些細な例ですが、生産コードでは、私は通常、私は高いkinded種類を考える(特定のユースケースのために必要なオフ機能である無名関数を考えますなど)。スカラ明らか
val add2 = (x: Int) => x + 2 add2(5) /* => 7 */
なぜ私は変数に匿名関数を割り当てるのですか?それはランタイム/コンパイル時のことですか?これを有利にする特定のパフォーマンス特性はありますか? Python Docsによると
これは実際には主に意見ベース/スタイルの問題です。しかし** Python **のようなラムダを使うことは、デバッグを難しくすることを除いて、他の "目的"にはならない。 –
'key'関数(例えば' sort'のため)が必要なときにラムダ関数に名前を割り当てることがあります。引数として使う同じ行で関数を定義すると思うときには、あまりにも簡潔ですが、通常の関数はあまりにも冗長であると感じます。 – timgeb
私は今朝これを実際にしました。私は異なる実装を持つ2つの高次関数をテストしていましたが、同じ入出力を持つ必要がありました。私は渡された関数を 'let'で束縛し、それを本体で使用しました。私はそれを具体的な機能として定義できましたが、これは迅速なテストには十分でした。 – Carcigenicate