【问题标题】:ColdFusion: Invoke cffunction from the same componentColdFusion:从同一组件调用 cffunction
【发布时间】:2010-10-25 21:26:53
【问题描述】:

这个问题可能很幼稚,因为我是 ColdFusion 编程的新手。

我有一个任务,为此我在组件内编写了一个函数f1。我想从另一个函数调用f1f2 在同一个组件中定义。

f2 在 cfm 文件中被调用。

我的问题 - 这是正确的方法吗?我可以从f2 调用f1 吗?

我也可以将f1 合并到f2,但我希望将f1 保留为单独的函数。

【问题讨论】:

    标签: coldfusion functional-programming composition


    【解决方案1】:

    是的,如果两个函数是同一组件的一部分,您可以在 ColdFusion 中从 f2 调用 f1。 (它们不必在同一个组件中,但如果是,答案总是肯定的。)

     <cffunction name="f2">
        ...
        <cfset result_of_f1 = f1()>
        ...
     </cffunction>
    
     <cffunction name="f1">
        ...
     </cffunction>
    

    从另一个函数调用一个函数有很多很好的理由。它叫做function composition

    【讨论】:

    • 是的,我现在明白了。它类似于 thanx
    • 您实际上不需要使用 cfinvoke 来调用第二个函数,除非您需要对象的新实例。您可以像调用任何其他函数一样简单地调用它(正如 Patrick 在他的示例中所示)。
    • 拯救了我的一天......我是 this.f1()-ing 在过去的半个小时里
    【解决方案2】:

    在 Coldfusion 10 和 Railo 4 中,您可以使用 Underscore.cfc library 创建组合函数:

    _ = new Underscore();// instantiate the library
    
    f1 = function (message) {
       return "hello " & message;
    };
    
    f2 = function (toOutput) {
       writeOutput(toOutput);
    };
    
    sayHelloTo = _.compose(f2, f1);
    
    sayHelloTo("world!");// output: "hello world!"
    

    (注意:我写了 Underscore.cfc 库)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多