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

How to import packages in nested directories (Haxe)?

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

Haxe 只是说 Test 不存在。当我尝试获取 wow.test.Test 时,它说的是同样的事情,test.Test 也是如此。我也试过把./wow/test.hx的包名设置为wow.testtest,也是一样的情况。

它只有在我将 test.hx 抛出 ./wow 并正常导入它的东西时才有效,例如:test.* 而不是 wow.test.*


我的测试结构:

——./Main.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();
    }
}

——./wow/test.hx——

package;

class Test
{
    public function new ()
    {
        trace("Dum !!");
    }
}

或者我需要配置吗?

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

引用the manual:

The (dot-)path to a type consists of the package, the module name and the type name. Its general form is pack1.pack2.packN.ModuleName.TypeName

您的示例中存在两个问题:

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