■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
うーん。素敵だ。ちなみにラムダは、λって書いてラムダ。
ピンバック: PHP5.3の新機能『クロージャーとラムダ関数』について勉強してみる | のぶろぐ