【问题标题】:A Closure Cannot Call Any User-Defined Function in CF 10? why?CF 10 中的闭包不能调用任何用户定义的函数?为什么?
【发布时间】:2012-05-23 03:23:41
【问题描述】:

注意: 闭包不能调用任何用户定义的函数,因为 函数的上下文没有保留,尽管闭包的上下文是 保留。它给出了错误的结果。例如,当一个闭包是 缓存,它可以被正确调用以供以后使用,而一个函数 不能。

引用自:http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSe61e35da8d31851842acbba1353e848b35-7ffa.html

有人能详细说明一下吗?为什么闭包不能调用 UDF?

闭包可以调用CF内置函数吗?还是只是用户定义的函数?

我认为了解其局限性至关重要。谢谢。

【问题讨论】:

    标签: coldfusion closures coldfusion-10


    【解决方案1】:

    闭包可以调用 CF 内置函数和用户定义函数。 CF 的实现没有任何限制,您可以尝试自己验证。

    存在的文档说明是由于记录了一个错误(预发布),即缓存的闭包实例(例如在应用程序范围内)在执行两次时无法调用 UDF。我认为它已修复,因此应删除该注释。

    附言我致力于在 ColdFusion 中实现闭包

    【讨论】:

    • 太棒了,你能通知文档 ppl 更新它吗?谢谢!
    • Chandan,你能看看stackoverflow.com/questions/10604166/…吗?很想听听您对此的意见。谢谢!
    • @Henry 感谢您提出这个问题!文档中确实存在误导,会通知团队。
    【解决方案2】:

    闭包会保留其创建时可见的变量副本。

    这基本上是计算机科学中闭包的定义。捕获的环境和一些要在该上下文中评估的代码。

    从闭包调用函数的限制似乎是 ColdFusion 中闭包实现中的一个错误——函数无法从闭包捕获的环境访问它们的环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多