gpt4 book ai didi

scheme - Racket 中的重叠模块导入

转载 作者:行者123 更新时间:2023-12-02 06:56:42 25 4
gpt4 key购买 nike

我想加载图像并在 Racket 中为其设置动画。我可以在 Dr. Racket 中轻松完成此操作,但我使用 Emacs 和 Geiser。要加载图像,我需要:

(require racket/draw)

接下来,为了将此图像绘制到屏幕上,我计划使用 big-bang 模块。要加载此模块,我必须:

(require 2thdp/image)

但我收到此错误:

module: identifier already imported from: 2htdp/image
at: make-pen
in: racket/draw
errortrace...:

这基本上意味着我不能两次导入相同的模块。但我需要这两个库。如何避免这个问题?

最佳答案

当两个模块提供同名函数时,您可以在导入时重命名函数。

一种简单的方法是重命名其中一个模块中的所有函数,使用一些通用前缀重命名所有函数。您可以使用 requireprefix-in 修饰符来执行此操作:

(require racket/draw)
(require (prefix-in htdp: 2htdp/image))

make-pen ; the `make-pen` from racket/draw
htdp:make-pen ; the `make-pen` from 2htdp

顺便说一下,: 没有什么特别的,它只是我见过的一种约定。前缀可以是(比如)htdp-,而不是 htdp:。无论您使用什么,它都会被添加到该模块提供的每个名称之前。

如果只有一个函数名称发生冲突,您可以使用 rename-in 重命名其中一个模块中的该函数。

有关更多信息,请参阅 require .

关于scheme - Racket 中的重叠模块导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17894875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com