球拍-需要整个文件目录

Nex*_*ist 3 lisp scheme require racket

目前,我必须在每个文件的顶部执行此操作:

(require "dynamore/dynamore.rkt")
(require "dynamore/db.rkt")
(require "dynamore/types.rkt")
Run Code Online (Sandbox Code Playgroud)

我希望能够做这样的事情:

(require dynamore)
Run Code Online (Sandbox Code Playgroud)

最好不必开发自己的收藏。

Sor*_*ase 6

如果您不想创建一个包(这意味着您需要require相对):

  1. 如果dynamore只包含这三个文件,你可以使用reprovide-langglob-in如下:(require (glob-in "dynamore/*.rkt"))
  2. 您还可以创建main.rktdynamore使用的主要功能reprovide-lang具体reprovide只有这三个文件:

    #lang reprovide
    "dynamore.rkt"
    "db.rkt"
    "types.rkt"
    
    Run Code Online (Sandbox Code Playgroud)

    要使用它,只需(require "dynamore/main.rkt")

如果您想创建一个程序包,请按照上面的解决方案2(create main.rkt等)info.rktdynamore目录中创建,如下所示:

#lang info
(define collection "dynamore")
Run Code Online (Sandbox Code Playgroud)

然后运行raco pkg install。从现在开始,您将可以(require dynamore)在任何地方。

注意:安装reprovide-lang,运行raco pkg install reprovide-lang

  • 顺便说一句,您不需要3个不同的`all-from-outs`,您可以将所有3个文件放在1个`all-from-out`中,例如`(提供(all-from-out“ dynamore.rkt” “ db.rkt”“ types.rkt”))` (2认同)