igorw / compose
函数组合。
v1.0.1
2013-04-20 00:49 UTC
This package is not auto-updated.
Last update: 2024-09-09 10:59:33 UTC
README
函数组合。
允许您将函数拼接在一起形成管道。如果您需要在多个步骤中转换数据,并且希望从高层次描述这些步骤,这可能会很有用。
compose
通常,函数组合意味着取两个函数 f
和 g
,并生成一个新的函数 z
,该函数将 f
应用到 g
的结果上。
z = compose(f, g)
; z(x) => f(g(x))
此库提供了一个执行此操作的 compose
函数。
$z = igorw\compose($f, $g);
var_dump($z($x));
它通过可变参数支持任意数量的函数组合。
$z = igorw\compose($f, $g, $h, $i);
最内层的函数(列表中的最后一个)可以接受任意数量的参数,而其他函数可能只能接受单个参数。
$z = igorw\compose($f, $g);
$z('a', 'b', 'c');
// => $f($g('a', 'b', 'c'))
管道
pipeline
与 compose
相同,但参数顺序相反。在某些情况下,这更易于阅读,因为您可以根据函数将被调用的顺序列出函数。
在这一点上,它与 Unix 管道非常相似。
示例
function transform_data($data) {
return [
'name' => $data['firstname'].' '.$data['lastname'],
];
}
$transformJson = igorw\pipeline(
function ($json) { return json_decode($json, true); },
'transform_data',
'json_encode'
);
$json = <<<EOF
{"firstname": "Igor", "lastname": "Wiedler"}
{"firstname": "Beau", "lastname": "Simensen"}
EOF;
$list = explode("\n", $json);
$newList = array_map($transformJson, $list);
$newJson = implode("\n", $newList);
// =>
// {"name": "Igor Wiedler"}
// {"name": "Beau Simensen"}