2016-12-04 12 views
1

Main.hxというファイルにメインのHaxeスクリプトがあります。この同じスクリプトでは、パッケージと見なされる同じディレクトリ内の他のHaxeスクリプトを含む既存のパッケージをインポートできますが、ネストされたディレクトリで宣言されたHaxeスクリプト(パッケージと見なす必要があります)はimport彼らが無視されていると確信している)。入れ子になったディレクトリ(Haxe)でパッケージをインポートするには?

Haxeはちょうど 'Testが存在しません。 wow.test.Testを取得しようとすると、同じことが言い、test.Testと同じです。私も./wow/test.hxにパッケージ名をwow.testtestと設定しようとしましたが、それは同じ状況でした。

./wowの外にtest.hxを投げて正常にインポートすると動作します。wow.test.*の代わりにtest.*のようになります。


私のテスト構造:

-

package; 

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

- ./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

それを設定する必要がありますか?

答えて

2

Haxeパッケージは、フォルダであり、含まれるファイルは、モジュールと呼ばれます。モジュール自体には、タイプのが1つ以上含まれています。

the manual引用する:

を入力する(ドット状)の経路は、パッケージ、モジュール名とタイプ名から成ります。

  • あなたはモジュールtest.hxTest.hxに名前を変更する場合は、モジュール名は、大文字で始めなければなりません:その一般的な形式は、あなたの例では二つの問題がありpack1.pack2.packN.ModuleName.TypeName

ですタイプはimport wow.Test.Testでインポートできます。しかし、モジュール名と型名は同じであるため、モジュール名を省略してimport wow.Testを使用してください。 package wow;

+0

これは、問題を解決し、私は 'Test'を構築する際には、コンソールで正しく記録されますが、私は唯一のwow.Test''内側にアクセスすることができます:あなたはモジュールテストでパッケージを宣言する必要が

  • 。私はこれをimport: 'wow.test.Test'で宣言しようとしましたが、' wow.test'には 'Test'が存在しません。しかし、これは私に多くの助けになります。なぜなら、私のメインスクリプトでパッケージが空でなければならない理由を説明しているからです。 – Hydro

  • +0

    haxeコンパイラは、モジュールを小文字で始めることを許可していないようですが、その答えを反映するように編集しました。 – memilian

    +0

    これは今や理にかなっています。 interestin 'の詳細をありがとう – Hydro

    関連する問題