gpt4 book ai didi

file - Haxe 宏 - 使用相对路径打开文件

转载 作者:行者123 更新时间:2023-12-01 05:50:51 24 4
gpt4 key购买 nike

我正在编写一个宏,它需要打开一个目录,该目录与我的宏类位于同一文件夹中。问题是我需要能够做同样的事情,而不需要知道宏的文件夹。

我的问题很简单,有没有办法在当前目录中用宏打开文件系统。

例如:a (b (Macro.hx, c (...) ) )

当我从“Macro.hx”运行宏方法时,我需要直接打开“c”

如果你有想法,谢谢:)

最佳答案

您可以在宏中使用这样的函数:

    static function loadFileAsString(path:String) {
try {
var p = haxe.macro.Context.resolvePath(path);
return sys.io.File.getContent(p);
}
catch(e:Dynamic) {
return haxe.macro.Context.error('Failed to load file $path: $e', Context.currentPos());
}
}

基本上,Context.resolvePath 将解析一个相对于所有类路径的路径。因此,如果您的宏在文件 my/package/MyMacro.hx 中,并且您想加载 my/package/MyMacroData.json,您可以使用:

haxe.macro.Context.resolvePath( 'my/package/MyMacroData.json' );

这将检查您构建中的每个类路径 - 包括任何 haxelibs 等,因此它会找到您的文件,但可以通过在相同的包/位置但在不同类中的文件来“隐藏”它路径或 haxelib,因此请尝试使用唯一的包/名称,以免意外发生。

但它应该适合你,我在我的 compiletime library 中使用它如果你想看一个示例实现。我已使用相关代码链接到该函数。

关于file - Haxe 宏 - 使用相对路径打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22746216/

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