【プログラミング】吾輩は関数である名前はまだない
はじめに
この記事ではチョットキニナル
プログラミングワードについて書いています。
ラムダ式
初めてラムダ式と聞いて
ピンと来ませんでしたが
ラムダ式とは要するに
「無名関数」を表現する為の
書き方のことである。
無名関数
英語だといろんな呼び名があるみたいです。
nameless function
anonymous function
無名関数とは
その名の通り
名前を持たない状態で定義される関数のこと
通常の関数の場合は以下のような定義方法を使うと思う。
PHPで例を出すと
<?php
function add($args1, $args2) {
return $args1 + $args2
}
$result = add(1,2);
echo $result;
//3
?>
無名関数で定義すると
名前がない状態で定義されるが
変数に代入したときに関数オブジェクトに化ける。
この時初めて関数名を持つことができる。
<?php
$add = function ($args1,$args2){
return $args1 + $args2;
};
$result = $add(1,2);
echo $result;
//3
?>
どんなときにつかう
周りを見渡す限りでは
主にイベントプロシージャに使われている。
ような気がする。
というのも
イベントプロシージャは別で定義するより
すぐその場で書いてしまったほうが
よかったりする。
C#では
コマンドボタンオブジェクトに
イベント登録を行うとき使う。
使うことのメリット
・関数を定義しないのでコンパクトであること
・定義済の関数名に依存しないこと
・コールバック関数として利用しやすいこと
まとめ
今回はラムダ式について書きました。
うまく扱えれば
ベーシックな関数定義を増やすことなく
関数を定義できます。
ただ、増やしすぎても
保守上の観点からはとても良くないので
適切に扱いましょう。
訂正
【無名関数で定義すると】の
関数閉包の例として取り上げたコードについて
「こういった処理をクロージャ(関数閉包)という。変数に関数を包み込むという感じかな。」
と記載させていただきましたが
関数閉包の場合は関数オブジェクトを返して
変数に代入する場合でした。
ご指摘くださった方(https://qiita.com/tadsan)
誠にありがとうございました。
参考資料
おわり
Author And Source
この問題について(【プログラミング】吾輩は関数である名前はまだない), 我々は、より多くの情報をここで見つけました https://qiita.com/ymd65536/items/ab17bc0b1d47d37c1b9e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .