ActionScript:一个.as文件中有多个公共函数?

3

我在使用 AS 的过程中,开发了一套功能实用的工具函数。例如:

$ cat utils/curried.as
package utils {
public function curried(f:Function, ...boundArgs):Function {
    function curriedHelper(...dynamicArgs):* {
        return f.apply(null, boundArgs.concat(dynamicArgs));
    }
    return curriedHelper;
}
}

我发现有时候我想在一个文件中保留多个公共函数……但是如果该文件定义为属于某个包,ActionScript将限制我每个文件只能有一个公共定义。

因此,在不创建具有静态方法的类的情况下,如何在单个.as文件中获得多个公共函数呢?


不使用类的原因是什么? - Josh
我不想在使用函数时加前缀。例如,我想使用“curried(foo,bar)”而不是“Utils.curried(foo,bar)”。 - David Wolever
我得反过来问一下,为什么不使用多个文件呢?AS3允许每个文件有一个公共声明,这对于函数和类都是一样的。保持每个文件一个声明难道不是有意义的吗?(磁盘空间很便宜,而且你仍然可以使用通配符导入)。我不理解将函数作为类的静态方法的建议。类是与函数不同的抽象概念。人们在Java中这样做,只是因为该语言不允许独立的函数。 - Arthur Debert
1个回答

7
简单来说,你不能在一个文件中声明多个包级别函数...对于每个声明的函数,你需要一个文件...
小小的提示:就我个人而言,我会像Josh一样将它们塞进一个类中...我认为允许函数级别的声明只是为了更好地向后兼容AS2...这对于原型设计或永远不会离开你手的东西来说还可以...但是你想象一下依赖3-4个库,每个库都通过包级别函数公开其功能?首先,这会完全垃圾你的自动完成(如果你的IDE提供了它),其次,你总是需要查看导入以查看哪个函数来自哪里...你提到的前缀实际上非常有优势...但好吧,这是我的意见...
问候
back2dos

谢谢 - 我没有考虑到例如自动完成垃圾邮件的问题。 - David Wolever

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接