首页 > 解决方案 > 具有多种功能的PHP处理以返回预期结果

问题描述

在这段代码中,这是一个用于传递多个函数的简单代码,我们应该期望5在结果中返回,

下面的方法应该接受一个可变数量的函数,并且应该返回一个新函数,该函数接受一个$arg名为

返回的函数应该pipeline使用参数调用第一个函数,并使用$arg第一个函数的结果调用第二个函数

返回的函数应该pipeline按顺序调用每个函数,遵循相同的模式并从最后一个函数返回值

function pipeline(...$funcs)
{
    return function($arg) use ($funcs)
    {
        return -1;
    };
}

$fun = pipeline( function($parameter) { return $parameter * 3; },
                      function($parameter) { return $parameter + 1; },
                      function($parameter) { return $parameter / 2; } );
echo $fun(3); # we should see 5 in output

现在返回的这段代码有什么问题-1

标签: php

解决方案


因为返回的函数返回-1并且函数永远不会被调用。您应该遍历函数并调用它们来改变$arg

function pipeline(...$funcs)
{
    return function($arg) use ($funcs)
    {
        foreach ($funcs as $func) {
            $arg = $func($arg);
        }
        return $arg;
    };
}

$fun = pipeline(function($parameter) { return $parameter * 3; },
                function($parameter) { return $parameter + 1; },
                function($parameter) { return $parameter / 2; });
echo $fun(3); # we should see 5 in output

输出:

5

推荐阅读