如果我有一个其他文件需要的文件,是否可以获取需要它的文件的绝对文件路径?
因此,如果lib_file.cr有一个宏被意图由app_file.cr导入它调用,那宏可以app_file.cr在编译时发现文件路径吗?
我试过这样的东西:
macro tester
puts __DIR__
puts __FILE__
end
Run Code Online (Sandbox Code Playgroud)
但是当从执行需求的文件调用时,它在编译时没有提供任何内容,而这在运行时:
? expanded macro: app_file
如果我将宏更改为:
macro tester
{{puts __DIR__}}
{{puts __FILE__}}
end
Run Code Online (Sandbox Code Playgroud)
它在编译时给我这个:
"/home/user/Documents/crystal_test/lib_file" "/home/user/Documents/crystal_test/lib_file.cr"
那么有一个技巧可以在编译时获得app_file.cr内部的完整路径lib_file.cr吗?
您可以使用默认args __FILE__来获取调用宏的文件.
macro tester(file = __FILE__)
{{puts file}} # Print at compile time
puts {{file}} # Print at runtime
end
Run Code Online (Sandbox Code Playgroud)