【发布时间】:2011-06-16 02:48:36
【问题描述】:
我想包含给定球拍文件中定义的所有功能,以便获得与复制它们相同的效果。有可能吗?
【问题讨论】:
我想包含给定球拍文件中定义的所有功能,以便获得与复制它们相同的效果。有可能吗?
【问题讨论】:
要从模块中导出函数,请使用provide,考虑一个文件"foo.rkt":
#lang racket
(define fortytwo 42)
(define (det a b c)
(- (* b b) (* 4 a c)))
(provide (fortytwo det))
文件"bar.rkt" 现在可以从"foo.rkt" 导入定义:
#lang racket
(require "foo.rkt")
(define (baz a b c)
(+ (det a b c) (- c 4)))
您可以允许其他文件访问文件中定义的所有内容的另一种方法是使用(all-defined-out):
#lang racket
(define fortytwo 42)
(define (det a b c)
(- (* b b) (* 4 a c)))
(provide (all-defined-out))
希望对您有所帮助。
【讨论】:
include,这可能是问题的最初内容。
(provide fortytwo det)。
你可以使用include如下:
创建一个名为 "foo.rkt" 的文件,如下所示:
(define x 1)
(define y 2)
然后在另一个文件中:
#lang racket
(require racket/include)
(include "foo.rkt")
(+ x y)
您应该会看到结果3。
您也可以查看include 的文档。
【讨论】:
#lang 因为foo.rkt 不是一个模块,它只是一些定义。 #lang 创建一个模块。如果这样做,我们会尝试在我们的模块中包含一个模块,这不是我们想要的。
你可以使用负载
(load "assert.scm")
【讨论】: