有没有人尝试过新的5.3.0 RC1 php版本并使用匿名函数玩了一下?
我想知道你是否可以像python一样使用它进行函数式编程。
例如,你能做点什么:
def sinus(x):
if x<=0.1:
return x
else:
return (lambda x: 3*x-4*x*x*x)(sinus(x/3))
print sinus(172.0)
或者更好,你可以做python或lisp等所有很酷的东西吗? 有没有限制? 不幸的是,我没有更好的例子。 :)
答案 0 :(得分:3)
PHP 5.3中的新匿名函数在现有的回调函数中非常有用。正如这个例子所示。
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
这仍然是一个技巧,因为PHP 5.3实现了一个Closure类,它使一个类实例可以调用。
PHP 5.3模仿匿名函数,但它不支持真正的匿名函数,因为PHP函数仍然不是一等函数。
您可以在此PHP RFC
中详细了解闭包答案 1 :(得分:1)
从PHP 4开始,您可以使用函数create_function来执行您想要的操作。
在你的例子中:
<?php
function sinus($x){
if($x < 0.1) {
return $x;
} else {
$func = create_function('$x', 'return 3*$x-4*$x*$x*$x');
return $func( sinus($x/3) );
}
}
?>