yuyat / curry
函数支持柯里化
v0.9.0
2014-10-13 14:29 UTC
Requires
- php: >=5.3
- yuyat/callable_to_reflector: ~0.9.0
Requires (Dev)
- phpunit/phpunit: ~4.2
This package is auto-updated.
Last update: 2024-08-25 21:02:09 UTC
README
函数支持柯里化。
实际上,它可以将接受多个参数的函数转换成嵌套函数,每个嵌套函数只接受一个参数,如下所示。
f(x, y, z) => f(x)(y)(z)
它可以部分应用。以下所有表示相同。
f(x)(y)(z)
f(x)(y, z)
f(x, y)(z)
f(x, y, z)
使用方法
基本使用
<?php use function yuyat\curry; $sum = curry(function ($x, $y, $z) { reteurn $x + $y + $z; }); echo $sum(1)->apply(2)->apply(3), PHP_EOL; // => 6 echo $sum[1][2][3], PHP_EOL; // Ruby-like short syntax // => 6
柯里化函数接受可变参数
对于接受可变参数的函数,您必须将实际参数长度指定为第二个参数。
<?php use function yuyat\curry; $sum = curry(function (/* numbers to calculate sum */) { $result = 0; foreach (func_get_args() as $arg) { $result += $arg; } return $result; }, 3); echo $sum(1)->apply(2)->apply(3), PHP_EOL; // => 6
作者
Yuya Takeyama