Racket - 需要整个目录的文件
Racket - require an entire directory of files
目前我必须在每个文件的顶部执行此操作:
(require "dynamore/dynamore.rkt")
(require "dynamore/db.rkt")
(require "dynamore/types.rkt")
我希望能够做这样的事情:
(require dynamore)
最好不用自己开发 collection。
如果您不想创建包(这意味着您需要 require
相对):
- 如果
dynamore
只包含这三个文件,您可以使用 reprovide-lang
的 glob-in
,如下所示:(require (glob-in "dynamore/*.rkt"))
.
您还可以在 dynamore
中创建 main.rkt
,它使用 reprovide-lang
的 the main functionality 专门重新提供这三个文件:
#lang reprovide
"dynamore.rkt"
"db.rkt"
"types.rkt"
要使用它,只需 (require "dynamore/main.rkt")
。
不使用 reprovide-lang
的本机解决方案是手动使用 all-from-out
:
#lang racket/base
(require "dynamore.rkt"
"db.rkt"
"types.rkt")
(provide (all-from-out "dynamore.rkt"
"db.rkt"
"types.rkt"))
如果你更喜欢创建一个包,那么按照上面的解决方案2(创建main.rkt
等),在dynamore
目录中创建info.rkt
如下:
#lang info
(define collection "dynamore")
然后运行raco pkg install
。从现在开始,您将能够从任何地方(require dynamore)
。
注:要安装reprovide-lang
、运行、raco pkg install reprovide-lang
、
目前我必须在每个文件的顶部执行此操作:
(require "dynamore/dynamore.rkt")
(require "dynamore/db.rkt")
(require "dynamore/types.rkt")
我希望能够做这样的事情:
(require dynamore)
最好不用自己开发 collection。
如果您不想创建包(这意味着您需要 require
相对):
- 如果
dynamore
只包含这三个文件,您可以使用reprovide-lang
的glob-in
,如下所示:(require (glob-in "dynamore/*.rkt"))
. 您还可以在
dynamore
中创建main.rkt
,它使用reprovide-lang
的 the main functionality 专门重新提供这三个文件:#lang reprovide "dynamore.rkt" "db.rkt" "types.rkt"
要使用它,只需
(require "dynamore/main.rkt")
。不使用
reprovide-lang
的本机解决方案是手动使用all-from-out
:#lang racket/base (require "dynamore.rkt" "db.rkt" "types.rkt") (provide (all-from-out "dynamore.rkt" "db.rkt" "types.rkt"))
如果你更喜欢创建一个包,那么按照上面的解决方案2(创建main.rkt
等),在dynamore
目录中创建info.rkt
如下:
#lang info
(define collection "dynamore")
然后运行raco pkg install
。从现在开始,您将能够从任何地方(require dynamore)
。
注:要安装reprovide-lang
、运行、raco pkg install reprovide-lang
、