4

如何获得我的 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
4

1 回答 1

7

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

foo.cr:

puts $0
puts File.expand_path($0)

然后编译并执行:

$~ crystal build foo.cr
$~ ./foo
./foo
/Users/MyUser/foo
于 2016-03-17T12:26:51.630 回答