php 中的 lambda 风格函数
请参阅下面的代码。
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
任何人都可以告诉它如何在打印 $newfunc 时输出 lambda_1 吗? 第二次的输出不同。
See the code below.
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
Can any one tell how come it output lambda_1 when print $newfunc?
and different output on second time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只是匿名函数在内部被命名为 lambda_1、lambda_2 等。
因此,第一个 echo 语句给出“新匿名函数:lambda_1”
该函数本身返回一个字符串,因此第二个 echo 语句 (
echo $newfunc(2, M_E) . "\n";
) 给出 ln(2) + ln(2.718281828459) = 1.6931471805599Its just that anonymous functions are internally named lambda_1, lambda_2, etc.
So you the first echo statement gives "New anonymous function: lambda_1"
The function itself is returning a string, hence the second echo statement (
echo $newfunc(2, M_E) . "\n";
) givesln(2) + ln(2.718281828459) = 1.6931471805599