Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 将参数传递给多个函数_Function_Design Patterns_Methods_Functional Programming - Fatal编程技术网

Function 将参数传递给多个函数

Function 将参数传递给多个函数,function,design-patterns,methods,functional-programming,Function,Design Patterns,Methods,Functional Programming,我有两个关于函数编程的一般问题 考虑以下3个功能: result = fun3(fun2(fun1(param1))); // param4 function fun1(param1) { // ... return param2; } function fun2(param2) { // ... return param3; } function fun3(param3) { // ... return param4; } 每个函数需要一个参

我有两个关于函数编程的一般问题

考虑以下3个功能:

result = fun3(fun2(fun1(param1))); // param4

function fun1(param1) {
    // ...
    return param2;
}
function fun2(param2) {
    // ...
    return param3;
}
function fun3(param3) {
    // ...
    return param4;
}
每个函数需要一个参数,进行一些计算并返回一个变量。
在我的例子中,每个后续函数都依赖于前一个函数的输出

  • 我的示例中的解决方案是常见做法吗?还是有更好的方法
  • 如果一个函数产生两个输出,而两个不同的函数需要它们怎么办
  • 如本例所示:

    function fun1(param1) {
        // ...
        return param2, param3;
    }
    function fun2(param2) {
        // ...
        return param4;
    }
    function fun3(param3) {
        // ...
        return param5;
    }
    


    PS:虽然这是一个一般的编程问题,但我使用
    PHP

    这一点可能很重要。第一个问题的答案是,是的,这是函数式编程中非常常见的技术。例如,它的基础也是非常普遍的

    关于第二个问题,许多函数式语言都支持元组或异构列表的概念——如果要返回多个值,可以显式创建一个值,也可以由运行时动态生成一个值。将返回值发送到多个后续函数将借助于执行多路复用的辅助函数来完成。问题变成了如何处理这些函数的返回值,我猜大概是一个列表。这可能取决于您的用例

    在Python中,这可能看起来像

    def multiplex(functions, value):
        return [func(value) for func in functions]
    
    为了保持您的单参数样式,上面可能会以某种方式出现,以便将要多路复用的函数列表绑定到单独的函数应用程序中。不同的语言以不同的方式实现了这一点,Python有一个functools模块,它支持部分应用函数,而Scala本机支持部分应用函数