-
Notifications
You must be signed in to change notification settings - Fork 21
/
06.1.2 库集合
31 lines (17 loc) · 1.78 KB
/
06.1.2 库集合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
6.1.2 库集合
一个集合(collection)是已安装的库模块的按等级划分的组。一个集合中的模块通过一个引号引用,无后缀路径。例如,下面的模块引用“date.rkt”库,它是部分“racket”集合的一部分:
#lang racket
(require racket/date)
(printf "Today is ~s\n"
(date->string (seconds->date (current-seconds))))
当搜索在线Racket文档时,搜索结果显示提供每个绑定的模块。或者,如果通过单击超链接到达绑定文档,则可以在绑定名称上悬停以查找哪些模块提供了它。
一个模块的引用,像racket/date,看起来像一个标识符,但它并不是和printf或date->string相同的方式对待。相反,当require发现一个被引号包括的模块的引用,它转化这个引用为基于集合的路径:
1、首先,如果这个引用路径不包含/,那么require自动添加一个“/main”给参考。例如,(require slideshow)相当于(require slideshow/main)。
2、其次,require隐式添加”.rkt”后缀给路径。
3、最后,require通过在已安装的集合中搜索路径来决定路径,而不是将路径处理为相对于封闭模块的路径。
作为一个最近似情况,集合作为文件系统目录实现。例如,“racket”集合大多位于Racket安装的“collects”目录中的“racket”目录中,如以下报告:
#lang racket
(require setup/dirs)
(build-path (find-collects-dir) ;主集合的目录
"racket")
然而,Racket安装的“collects”目录仅仅是一个require寻找目录集合的地方。其它地方包括用户指定的通过(find-user-collects-dir)报告的目录以及通过PLTCOLLECTS搜索路径配置的目录。最后,最典型的是,通过安装包(packages)找到集合。