gpt4 book ai didi

racket - 如何获取 Racket 中当前文件的运行时路径?

转载 作者:行者123 更新时间:2023-12-02 00:15:16 25 4
gpt4 key购买 nike

假设我有一个名为“test.rkt”的文件,我希望它的绝对路径在运行时可用。我知道最好的方法是使用以下方法绑定(bind)它:

(define-runtime-path orig-file "test.rkt")

但是,出于反射(reflection)的目的,我希望能够在不知道当前文件的名称的情况下执行此操作。例如,我希望能够执行以下操作:

(define-runtime-path-self orig-file)

最佳答案

您可以使用 #%variable-reference,它 (IIRC) 是 define-runtime-path 背后的低级反射魔法:

(resolved-module-path-name
(variable-reference->resolved-module-path
(#%variable-reference)))

还有syntax/location库:

(require syntax/location)
(quote-source-file)

请注意,如果您在一个位置编译文件,然后将源文件和compiled/ 目录移动到另一个位置,程序将打印它所在的位置编译,而不是运行的地方。


还有一种方法可以遍历语法对象和模块路径索引,但更复杂。

关于racket - 如何获取 Racket 中当前文件的运行时路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57155327/

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