发布于 2017-09-26 20:58:45
一个module-path?包含任何可以是required的东西,可以是path?,可以是符号,也可以是子模块路径(submod "food.rkt" lunch)。见文档中的require。
一个resolved-module-path?是一个“绝对路径”到哪里球拍可以找到模块(注1)。与模块路径相比,解析模块路径的语法更有限(即更少模棱两可)。
module-path-index? (MPI)是从一个module-path-index?到另一个module-path-index?的增量(注2)。使用module-path-index-join构建MPI(注3)。
(module-path-index-join #f #f)是从当前模块到自身的增量。(module-path-index-join "dumplings.rkt" #f)是从#f (当前模块)到相对路径"./dumplings.rkt" (是的,首先是路径,然后是基本路径)的增量。(module-path-index-join "nom-noms.rkt" (module-path-index-join "dumplings.rkt" #f))是从当前模块到"./dumplings.rkt"到"./nom-noms.rkt"的增量。当一个文件静态地需要另一个文件时,Racket会生成这样的MPIs -这些文件可以链接在一起,以找到标识符的绑定。(module-path-index-join '(submod test) #f)是指当前模块中的测试子模块。希望这能有所帮助。
注1:如果模块位于文件中,则其解析路径为绝对文件路径。如果模块是在语法对象上调用eval的结果,那么它的resolved-module-path?就是另外一些东西。
注2:海事组织“模块路径三角洲”将是一个更好的名称。
注3:当前两个参数为module-path-index-join时,#f接受第三个可选参数。这允许模块引用它自己的子模块之一。一般情况下,您不希望直接使用此功能。而是使用quote-module-path。
https://stackoverflow.com/questions/46427622
复制相似问题