1

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

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

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

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

我认为理解这一点的局限性至关重要。谢谢你。

4

2 回答 2

2

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

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

ps 我在 ColdFusion 中研究了闭包的实现

于 2012-05-15T20:53:00.467 回答
0

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

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

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

于 2012-05-15T15:17:11.513 回答