注意:闭包不能调用任何用户定义的函数,因为函数的上下文没有被保留,尽管闭包的上下文被保留了。它给出了错误的结果。例如,当一个闭包被缓存时,它可以被正确地调用以供以后使用,而函数则不能。
有人可以详细说明一下吗?为什么闭包不能调用 UDF?
闭包可以调用CF内置函数吗?还是只是用户定义的函数?
我认为理解这一点的局限性至关重要。谢谢你。
注意:闭包不能调用任何用户定义的函数,因为函数的上下文没有被保留,尽管闭包的上下文被保留了。它给出了错误的结果。例如,当一个闭包被缓存时,它可以被正确地调用以供以后使用,而函数则不能。
有人可以详细说明一下吗?为什么闭包不能调用 UDF?
闭包可以调用CF内置函数吗?还是只是用户定义的函数?
我认为理解这一点的局限性至关重要。谢谢你。
闭包可以调用 CF 内置函数和用户定义函数。CF 的实现没有任何限制,您可以尝试自己验证。
存在的文档说明是由于记录了一个错误(带有预发布),即缓存的闭包实例(例如在应用程序范围内)在执行两次时无法调用 UDF。我相信它是固定的,因此应该删除该注释。
ps 我在 ColdFusion 中研究了闭包的实现
闭包保留在创建时可见的变量副本。
这基本上是计算机科学中闭包的定义。捕获的环境和一些要在该上下文中评估的代码。
从闭包调用函数的限制似乎是 ColdFusion 中闭包实现中的一个错误——函数无法从闭包捕获的环境中访问它们的环境。