在球拍中包含外部文件

dzh*_*lil 15 scheme include racket

我想包括在给定的racket文件中定义的所有函数,以便获得与复制时相同的效果.有可能吗?

Yas*_*aev 18

要从模块中导出函数,请使用provide,考虑一个文件"foo.rkt":

#lang racket
(define fortytwo 42)
(define (det a b c)
  (- (* b b) (* 4 a c)))
(provide (fortytwo det))
Run Code Online (Sandbox Code Playgroud)

该文件"bar.rkt"现在可以导入以下定义"foo.rkt":

#lang racket
(require "foo.rkt")
(define (baz a b c)
  (+ (det a b c) (- c 4)))
Run Code Online (Sandbox Code Playgroud)

您可以允许其他文件访问文件中定义的所有内容的另一种方法是使用(all-defined-out):

#lang racket
(define fortytwo 42)
(define (det a b c)
  (- (* b b) (* 4 a c)))
(provide (all-defined-out))
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


Sam*_*adt 13

您可以使用include如下:

创建一个名为的文件"foo.rkt",如下所示:

(define x 1)
(define y 2)
Run Code Online (Sandbox Code Playgroud)

然后在另一个文件中:

#lang racket
(require racket/include)
(include "foo.rkt")
(+ x y)
Run Code Online (Sandbox Code Playgroud)

你应该看到结果3.

您也可以查看文档include.

  • @Manbroski没有`#lang`因为`foo.rkt`不是模块,它只是一些定义.`#lang`创建一个模块.如果我们这样做,我们会尝试在我们的模块中包含一个模块,这不是我们想要的. (3认同)