当我在目录结构中以错误的级别导入第三方库时,我似乎遇到了Flash Builder中的编译问题。
例如,有时我会将一个级别的库深度导入到其目录树中,并且包浏览器最终会排除前缀根级别的包,通常是“com”。或“网”。即使源本身的内容没有改变,这也会导致编译错误。
因此:
是一个1)约定或2)语言要求一个类的包结构(例如,“foo.bar.Class”)必须匹配其路径位置(例如,foo / bar / Class.as)?
如果是语言要求,为什么是必需的?难道这不会超过包结构,因为它已经在源代码中指定并且非常乐意消耗每行的前三到八列吗?
如果这不是语言要求,我的编译错误是Flash Builder执行约定的结果吗?
答案 0 :(得分:1)
这是一种语言要求,它是ActionScript与Java共享的一种语言要求。 Wikipedia article on Java packages提供了合适的说明:
Java语言 规范建立包 命名约定以避免 两个已发布包的可能性 具有相同的名称。命名 约定描述了如何创建 独特的包名,使包 分布广泛的将有 唯一的命名空间。这允许 包装要分开,容易和 自动安装和 编目。
我想补充一点,通过将类文件保存在相应的文件夹结构中,可以通过导入现有的文件夹结构来组合完整或部分项目(例如框架和/或组件) - 而不存在命名冲突和/或覆盖现有文件。当您使用大型代码库时,它还有助于查找特定的类。