PHPの匿名関数(ラムダ関数)
■PHP
create_function関数を使う。第1引数では、関数に対する引数を文字列で指定し、第2引数では、関数の処理内容を記述する。以下の例は、ユーザー定義関数(匿名関数)で配列をソートする例。
<?php
$ary = array(1, 5, 2);
usort(
$ary,
create_function(
'$a,$b',
'if($a < $b){return 1;}if($a === $b){return 0;}if($a > $b){return -1;}'
)
);
//1,2,5
?>
但し、PHP5.3.0以降では以下のように素敵に記述できる。
<?php
$function = function($arg){
print($arg);
};
$function('I was a dog.');//I was a dog.
?>
うーん、素敵になりましたね。但し、なんというか言語全体として無尽蔵に広がってまとまりがなくならないか心配ですな。
■JavaScript
ちなみにJavaScriptでは以下のようになる。関数もオブジェクトとして扱えたりするところがPHPよりも素敵だと、個人的には思う。
var ary = new Array(1, 5, 2);
ary.sort(
function(a, b){
if(a > b){return 1;}
if(a < b){return -1;}
if(a === b){return 0;}
}
);
alert(ary);//1,2,5
うーん。素敵だ。ちなみにラムダは、λって書いてラムダ。
TrackBack URL :
Comments (0)
コメントはまだありません»
コメントはまだありません。
この投稿へのコメントの RSS フィード。TrackBack URL
コメントする