为什么在 Actionscript 中很少使用内联闭包?它们非常强大,我认为非常具有可读性。我几乎看不到有人使用它们,所以也许我只是在看错误的代码。 Google 在他们的 Google Maps API for Flash 示例中使用它们,但我认为那是我见过它们的唯一地方。
我喜欢它们,因为您可以访问定义它们的范围内的局部变量,并且您将逻辑保留在一种方法中,并且最终不会产生许多您必须为其命名的函数。
使用它们有什么注意事项吗?它们的工作方式与 C# 中的工作方式几乎相同吗?
实际上我才刚刚发现 AS3 支持它们,我很生气,因为我以为我读到它们在 AS# 中已被弃用。所以我又开始使用它们了!
private function showPanel(index:int):void {
_timer = new Timer(1000, 1);
_timer.addEventListener(TimerEvent.TIMER, function(event:Event):void
{
// show the next panel
showPanel(index++);
});
最佳答案
需要注意的最大问题是内联闭包中通常没有定义“this”。有时您可以设置一个“this”,但并不总是可以设置正确的“this”,这取决于您使用它们的方式。
但我想说的是,我处理过的大部分 Flex 代码在整个代码中都有大量的内联闭包——因为回调是完成工作的唯一方法,而且通常你不需要带出一个完整的单独函数.
有时当嵌套的函数太多时,我会用函数中的函数变量稍微打破它;这有助于我通过为函数提供标签但保留内联闭包的一些特征(例如访问局部变量)来组织一点。
希望这可以帮助。
关于actionscript - Actionscript 中内联闭包/函数委托(delegate)的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/213912/