php 無名関数と即時関数

無名関数

無名関数とは、関数名を定義せず使用することが出来る。
どういう時に使うかの説明に、関数を定義する程でもない処理を書きたい時というふうによく説明されるけど、それはどんな時って思う。
パラメータに関数を渡すような状況でしか利用する機会はないと思う。

<?php

例1)
$add = function($a, $b)
{
    return $a + $b;
};
$c = $add(3, 2);
print($c);    // 5

例2)
$list = array(1, 2, 3);
$result = array_map(function($e){
    return $e * 2;
}, $list);
var_dump($result);  // array(3) { [0]=> int(2) [1]=> int(4) [2]=> int(6) }

?>

即時関数

無名関数とよく似ているけど、こちらは即時実行される。変数の汚染を防ぎ、処理をまとめることが出来るメリットがあるが、どんな時に使えば良いのかはイマイチ分からない。

<?php

例1)
$c = (function($a, $b)
{
    return $a + $b;
})(6, 5);   // 11

print($c);

?>

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です