file - 获取编译脚本的 __FILE__

标签 file crystal-lang

如何获取我的 Crystal 脚本的编译版本以获取它自己的 __FILE__。这是一个例子。我有一个名为 ~/test.cr 的文件,其中包含以下内容:

puts __FILE__

我通过 Crystal 编译脚本
~$ crystal ~/test.cr -o ~/test.compiled

接下来我运行 ~/test.compiled。我产生结果
/Users/Account1/test.cr

即使 __FILE__ 实际上是
/Users/Account1/test.compiled

有没有办法让它产生
/Users/Account1/test.compiled

代替
/Users/Account1/test.cr

最佳答案

元常量 __FILE__始终指向源文件,而不是可执行文件。但是,您可以使用 $0获取当前的可执行路径(或使用 File.expand_path 的完整路径):

foo.cr:

puts $0
puts File.expand_path($0)

然后编译执行:
$~ crystal build foo.cr
$~ ./foo
./foo
/Users/MyUser/foo

关于file - 获取编译脚本的 __FILE__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059936/

相关文章:

c: 返回目录中的所有文件名

crystal-lang - Crystal C 绑定(bind) : return type char*

crystal-lang - 如何检查 Crystal 中使用的操作系统 (OS)?

crystal-lang - 如何读取晶体中其他尺寸的切片?

java - 从文件中的二进制内容中分离 ASCII 文本

c++ - 将 vector <pair <double,double> 写入文件的最快方法

python - 无法用浏览器打开文件

linux - 如何在 Linux 终端中获取另一个程序的文件路径?

crystal-lang - 如何为方法参数设置默认值

crystal-lang - 是否可以手动获取 `yield` 值而不是在循环中?