@blog.justoneplanet.info

日々勉強

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

うーん。素敵だ。ちなみにラムダは、λって書いてラムダ。

1件のコメント»

RSS feed for comments on this post.TrackBack URL

Leave a comment