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

(require "dynamore/dynamore.rkt")
(require "dynamore/db.rkt")
(require "dynamore/types.rkt")

我希望能够做这样的事情:
(require dynamore)

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

最佳答案

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

  • 如果 dynamore 只包含这三个文件,您可以使用 reprovide-lang glob-in 如下: (require (glob-in "dynamore/*.rkt"))
  • 您还可以在 main.rkt 中创建 dynamore ,它使用 reprovide-langthe main functionality 专门重新提供这三个文件:
    #lang reprovide
    "dynamore.rkt"
    "db.rkt"
    "types.rkt"
    

    要使用它,只需 (require "dynamore/main.rkt")
  • 不使用 reprovide-lang 的 native 解决方案是手动使用 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 等),在 info.rkt 目录中创建 dynamore 如下:
    #lang info
    (define collection "dynamore")
    

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

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

    关于scheme - Racket - 需要一个完整的文件目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57439852/

    10-11 01:07