<?php
$double = function ($x) { return 2*$x; };
$cube = function ($x) { return $x*$x*$x; };function compose($f, $g) {
return function ($x) use ($f, $g) {
return $g($f($x));
};
}$func = compose($double, $cube);
echo $func(5);
echo "<br />";
echo $cube($double(5)); // 对应compose调用:先应用第1个函数,后应用第2个函数。
?>
可以知道compose()函数的功能是将两个函数参数复合成一个函数。请将compose()函数改写为支持任意数量的函数复合;只需要支持函数变量作参数,不需要支持函数名字符串的方式。写完请使用以下代码测试,正常应输出65。
$func = compose($double, $cube, function ($var) {return $var+1;});
echo $func(2);