gpt4 book ai didi

Haxe:如何防止未使用的类被淘汰

转载 作者:行者123 更新时间:2023-12-04 22:03:30 25 4
gpt4 key购买 nike

我的类在其他代码中从未直接提及,但只能使用 Type.resolveClass 访问.我希望它们被编译并包含在应用程序中,但我不知道如何做到这一点。我以为 @:keep (或 @:keepSub )正是为此,但它没有像我预期的那样工作。这就是我所做的:
Main.hx :

package;
//import Foo; //uncomment this line to make it work
class Main {
static function main() trace(Type.resolveClass('Foo'));
}
Foo.hx :
package;
@:keep class Foo {}

但是这个痕迹 null (我测试过 JS 和 Flash)
即使我用 -dce no 编译它仍然有痕迹 null .

不确定这是编译器问题还是我不​​明白它是如何工作的。

最佳答案

这不是编译器问题,而是正确的行为。如果一个模块从未被导入,它就永远不会被包含在编译中。编译器永远不会看到 @:keep .

一个常见的解决方法是使用 --macro include('package') (见 Compiler.include() ),它强制 package 中的所有模块要编译。

请注意,通配符导入 ( import package.*; ) 不起作用,因为 wildcard imports are lazy :

When using wildcard imports on a package the compiler does not eagerly process all modules in that package. This means that these modules are never actually seen by the compiler unless used explicitly and are then not part of the generated output.

关于Haxe:如何防止未使用的类被淘汰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42021607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com