球拍模块路径指数已经Module Paths(谓语是module-path?
),Resolved Module Paths(谓语是resolved-module-path?
)和Module Path Indexes(谓语是module-path-index?
)。什么是球拍
我想module-path?
是任何可能合理地指向一个模块。我想解决的模块路径指向系统上的实际模块。
但什么是模块路径索引,它是什么让我只是解决模块路径?
球拍模块路径指数已经Module Paths(谓语是module-path?
),Resolved Module Paths(谓语是resolved-module-path?
)和Module Path Indexes(谓语是module-path-index?
)。什么是球拍
我想module-path?
是任何可能合理地指向一个模块。我想解决的模块路径指向系统上的实际模块。
但什么是模块路径索引,它是什么让我只是解决模块路径?
A module-path?
包含任何可能是require
d。可能是path?
,可能是符号,可能是子模块路径(submod "food.rkt" lunch)
。请参阅文档中的require
。
甲resolved-module-path?
是“绝对路径”到球拍可以找到模块(注1)。解析模块路径的语法比模块路径更受限制(即不太模糊)。
甲module-path-index?
(MPI)是从一个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"
的增量。当一个文件静态地需要另一个文件时,球拍建立这样的MPI--这些可以被链接在一起以找到标识符的绑定。(module-path-index-join '(submod test) #f)
是指当前模块中的测试子模块。希望有帮助。
注1:如果模块位于文件中,则其解析路径为绝对文件路径。如果模块是在语法对象上调用eval
的结果,则其resolved-module-path?
是别的。
注2:IMO“模块路径增量”将是一个更好的名称。
注意3:module-path-index-join
接受第三个可选参数,前两个参数为#f
。这可让模块引用其自己的子模块之一。您通常不希望直接使用此功能。而是使用quote-module-path
。
将此转移到注释;-)部分难题是模块路径索引是半实体的,这对模块系统很重要(两次加载模块是个坏主意)。 – soegaard
是的,他们是半实习的,只是为了帮助双重加载。尽管有时候你确实想要加载一个模块两次,比如你正在编写DrRacket,并且你希望模块在用户运行时运行。 –