Haxe: доступ к корневому классу пакета, если он скрыт за классом из другого пакета

Код:

//./Main.hx
package;
import bar.Bar;
class Main {
    static var foo:Foo;
    static function main() {
        $type(foo); // I want it to be "Foo", but it's "bar.Foo"
    }
}

//./Foo.hx
package;
class Foo {}

//./bar/Bar.hx
package bar;
class Foo {}
class Bar {}

Bar это библиотека, которую я не могу изменить. Он определяет класс с именем Foo в файле Bar.hx, Я не пользуюсь напрямую bar.Foo, но использовать bar.Bar, Я хочу назвать свой класс Foo, это хорошее имя, и я не могу думать о другом, но я не могу использовать его, потому что оно прячется за bar.Foo, Что я могу сделать?

Одним из решений является изменение bar.Foo декларация

private class Foo {}

Работает и ничего не ломает, но я не хочу менять библиотеку.

1 ответ

Решение

import bar.Bar является модулем импорта, что означает, что он импортирует все типы в Bar.hx модуль. Так что если вы хотите предотвратить bar.Bar.Foo от импорта, вы можете явно импортировать только Bar типа как это:

import bar.Bar.Bar;

Это объясняется в разделе " Импорт" руководства Haxe.

Другие вопросы по тегам