代码之家  ›  专栏  ›  技术社区  ›  evildead

有人试用过带有匿名函数的新php测试版吗?

  •  1
  • evildead  · 技术社区  · 17 年前

    我想知道您是否可以像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 回复  |  直到 17 年前
        1
  •  3
  •   Ólafur Waage    17 年前

    PHP5.3中的新匿名函数在现有回调函数中非常有用。如本例所示。

    echo preg_replace_callback('~-([a-z])~', function ($match) {
        return strtoupper($match[1]);
    }, 'hello-world');
    // outputs helloWorld
    

    这仍然是一个技巧,因为PHP5.3实现了一个使类实例可调用的闭包类。

    Wikipedia quote:

    PHP5.3模仿匿名函数,但不支持真正的匿名函数,因为PHP函数仍然不是一流函数。

    您可以在本文中阅读有关闭包的更多信息 PHP RFC

        2
  •  1
  •   Seb    17 年前

    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) );
      }
    }
    
    ?>
    
    推荐文章