PHP:lambda的默认函数参数值

时间:2013-12-02 18:37:50

标签: php function lambda default

具有lambda参数的PHP函数是否可以具有默认值?

虽然以下工作正常:

function calcValue($func) {
  echo $func(5);
}

calcValue(function($a){return 2*$a;});

当我尝试:

function calcValue($func = function($a){return 2*$a;}) {
  echo $func(5);
}

我得到一个解析错误:

Parse error: syntax error, unexpected 'function' (T_FUNCTION)

2 个答案:

答案 0 :(得分:1)

默认值必须是常量表达式。有关详细信息,请参阅此问题:PHP Anonymous Function as Default Argument?

答案 1 :(得分:1)

函数调用中的默认值必须是常量。它们不能是动态值/表达式结果。

good: function($foo = 'bar');
bad:  function($foo = bar());
bad:  function($foo = 'ba' . 'r'); // to PHP it's still an expression.

参考:http://php.net/manual/en/functions.arguments.php