我试过了:
#lang racket
(require foo.rkt)
和
#lang racket
(require "foo.rkt")
和
#lang racket
(require (relative-in "." foo.rkt))
如果文档中存在一个简单的示例,只包含当前文件目录中的一个文件,我找不到它。请帮忙。
答案 0 :(得分:5)
你的第二个猜测实际上是正确的:
#lang racket
(require "foo.rkt")
但是,您需要做的是provide
您希望从其他文件中获取的函数,否则foo.rkt
中的变量不会绑定到您的模块中。
所以foo.rkt
文件的例子是:
#lang racket ; foo.rkt
(provide x)
(define x 5)
(提供的位置无关紧要,可以高于或低于define
声明。)
如果需要,可以使用all-defined-out
导出模块可以一次性提供的所有内容。要做到这一点:
#lang racket ; foo.rkt
(provide (all-defined-out))
(define x 5)
(define y 6)
现在您可以要求此文件并在另一个模块中使用x
和y
:
#lang racket
(require "foo.rkt")
x ; => 5
请注意,这两个文件需要位于同一目录中,否则您需要传入该目录的路径。如:
(require "subdir/to/foo.rkt")
作为第一个附录,Racket还有import
和load
。一般情况下,您不需要这些,并且通常应该坚持使用require
/ provide
对。
作为第二个附录,您创建的本地文件将作为字符串传递到require
。当它的符号(例如:(require pict)
)表示您需要已安装的模块时。虽然它更高级,但您可以通过阅读documentation on collections来制作其中一个。