哈克Lambda的例子——什么



有人能解释一下这是如何工作的吗?

http://docs.hhvm.com/manual/en/hack.lambda.php

变量被自动和转换地捕获(包括$this):

<?hh
$z = 11;
$foo = $x ==> $y ==> $x * $z + $y;
$bar = $foo(5);
var_dump($bar(4)); // outputs 59

从概念上讲,$foo就像一个有两个输入x和y的函数。调用$foo就像一个设置x=5的偏函数求值。$bar调用然后用y=4来评估函数。所以你最终得到了x*z+y=5*11+4=59。

换句话说,$foo是一个计算为另一个lambda的lambda。所以$bar变成了一个lambda,它的计算结果是一个数字。

$z = 11
$foo = $x ==> $y ==> $x * $z + $y;
// foo = f(x,y,z) = x * z + y
$bar = $foo(5);                 // $bar is now $y ==> 5 * $z + $y
// bar = f(y,z) = 5 * z + y
$result = $bar(4);              // this gives you 5 * $z + 4 = 59
// result = f(z) = 5 * z + 4
var_dump(result);               // outputs 59

相关内容

  • 没有找到相关文章

最新更新