有没有人尝试过使用匿名函数的新的php测试版?

时间:2009-04-01 23:38:12

标签: php programming-languages lambda functional-programming

有没有人尝试过新的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等所有很酷的东西吗? 有没有限制? 不幸的是,我没有更好的例子。 :)

2 个答案:

答案 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类,它使一个类实例可以调用。

Wikipedia quote:

  

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) );
  }
}

?>