actionscript - Actionscript 中内联闭包/函数委托(delegate)的使用

标签 actionscript inline-method

为什么在 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/

相关文章:

c++ - 内联运算符好吗?

C 内联函数和内存使用

具有相同 if 语句的 C++ 内联方法

c# - 使用 C# 在 dotNet 3.0+ 中内联函数?

actionscript-3 - 是否可以使用鼠标向下和向上事件来模拟鼠标点击?

actionscript-3 - ActionScript 3.0;循环播放音频文件

flash - 如何知道是 actionscript 1、actionscript 2 还是 actionscript 3?

audio - 如何在 AS3 中将声音对象提取到单字节数组

apache-flex - 弹性 : Constant strings in metadata

c# - 如果启用优化,JIT 是否会始终内联此方法?