【问题标题】:Get __FILE__ of compiled script获取已编译脚本的 __FILE__
【发布时间】:2016-03-17 11:58:48
【问题描述】:

如何获取我的 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 crystal-lang


    【解决方案1】:

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

    foo.cr:

    puts $0
    puts File.expand_path($0)
    

    然后编译执行:

    $~ crystal build foo.cr
    $~ ./foo
    ./foo
    /Users/MyUser/foo
    

    【讨论】:

    • 另外,$0PROGRAM_NAME 的别名,它的类型更大,但更具描述性
    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 2020-08-08
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多