如何在嵌套目录(Haxe)中导入包?

时间:2016-12-04 17:49:27

标签: haxe

我在一个名为Main.hx的文件中有一个主要的Haxe脚本。在同一个脚本中,我可以导入任何现有的包,包括被认为是包的同一目录中的其他Haxe脚本,但是在嵌套目录中声明的Haxe脚本(应该被视为包)不适用于{{1} (我几乎可以肯定他们被忽略了。)

Haxe只是说import不存在。当我尝试获取Test时它会说同样的事情,并且与wow.test.Test相同。我还尝试将包名称设置为test.Test ./wow/test.hxwow.test,情况也一样。

仅当我将test扔到test.hx之外并正常导入其内容时才有效,例如:./wow而不是test.*

我的测试结构:

- ./Main.hx -

wow.test.*

- ./wow/test.hx -

package;

import haxe.unit.TestCase;
import openfl.display.Sprite;
import native.*;
import wow.test.*;

class Main extends Sprite
{

    public function new ()
    {
        super ();
        new Test();
    }
}

或者我需要配置吗?

1 个答案:

答案 0 :(得分:2)

Haxe包是文件夹,它们包含的文件称为模块。模块本身可以包含一个或多个类型

引用the manual

  

类型的(点 - )路径包括包,模块名称和类型名称。它的一般形式是pack1.pack2.packN.ModuleName.TypeName

您的示例中有两个问题:

  • 模块名称必须以大写字母开头,如果您将模块test.hx重命名为Test.hx,则可以使用import wow.Test.Test导入该类型。但由于模块名称和类型名称相同,因此可以省略模块名称并使用import wow.Test
  • 您需要在模块测试中声明包:package wow;