2016-12-04 6 views
1

У меня есть основной скрипт Haxe в файле Main.hx. И в этом же скрипте я могу импортировать любой существующий пакет, в том числе другие скрипты Haxe в том же каталоге, который считается пакетом, но скрипты Haxe (которые должны считаться пакетом), объявленные во вложенных каталогах, не работают с import (I ' почти уверены, что их игнорируют).Как импортировать пакеты во вложенные каталоги (Haxe)?

Haxe просто говорит, что Test не существует. Когда я пытаюсь получить wow.test.Test, он говорит то же самое, и то же самое с test.Test. Я также попытался установить имя пакета в ./wow/test.hx как wow.test и test, и это была та же ситуация.

Он работает только тогда, когда я бросаю 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 !!"); 
    } 
} 

Или мне нужно настроить это?

ответ

2

Пакеты Haxe - это папки, а файлы, которые они содержат, называются модулями. Сам модуль может содержать один или несколько типов.

Цитирую the manual:

The (dot-) Путь к типу состоит из пакета, имя модуля и имя типа. Его общая форма pack1.pack2.packN.ModuleName.TypeName

Существует два вопроса, в вашем примере:

  • Имя модуля должно начинаться с заглавной буквы, если переименовать модуль test.hx к Test.hx , вы сможете импортировать этот тип с помощью import wow.Test.Test. Но поскольку имя модуля и имя типа совпадают, вы можете опустить имя модуля и просто использовать import wow.Test.
  • Вы должны объявить пакет в тесте модуля: package wow;
+0

Это решает проблему, он записывает правильно в консоли, когда я построить 'Test', но я могу получить доступ только он внутри' wow.Test' , Я попытался объявить это при импорте: 'wow.test.Test', но компилятор говорит, что' Test' не существует в 'wow.test'. Но это мне очень помогает ... Хм, так что объясняет, почему пакет должен быть пустым в моем главном скрипте. – Hydro

+0

Кажется, что компилятор haxe не позволяет модулю начинать с строчной буквы, я отредактировал ответ, чтобы отразить это. – memilian

+0

Теперь это имеет смысл. Спасибо за подробности – Hydro

 Смежные вопросы

  • Нет связанных вопросов^_^