package - 如何处理 Racket 中的名称冲突?
问题描述
在学习 Racket 时,我遇到了gregor包,它说它的date
结构与内置结构冲突date
:
Gregor 提供了一个日期结构,它表示没有时间或时区的日历日期。不幸的是,名称日期与球拍/基地中现有的、不兼容的定义冲突。
在我做之前(require gregor)
,我得到了内置的date
. 之后(require gregor)
,我得到了 gregor 的约会。没关系。
但是,为了了解如何处理冲突和命名空间,我可以访问内置的date
吗?我可以以某种方式将 gregor 放入一个命名空间,以便我可以同时使用这两者吗?处理这个的惯用方式是什么?
解决方案
您可以重命名每个必需的 id 以使它们不冲突。
(require (rename-in gregor [date gregor-date]))
date ;; Racket's date
gregor-date ;; gregor's date
但是一个快速的解决方案是在每个需要的 id 前面加上前缀(这在某种意义上创建了“命名空间”)
(require (prefix-in gregor: gregor))
date ;; Racket's date
gregor:date ;; gregor's date
推荐阅读
- c# - CngKey System.Security.Cryptography.CryptographicException 系统找不到 Azure 上指定的文件
- autodesk-forge - Autodesk forge SVF2 dbid
- selenium-webdriver - 带有边缘浏览器的机器人框架
- python - Python检查列表中是否存在用于检测循环的列表
- python - 如何从 Python 中的 OLS 结果中获取因变量的信息?
- javascript - Redux Saga - yield spawn takeEvery 调用没有重载
- php - 使用 Bearer 令牌在 php 中使用 cURL 获取 DATA
- npm - NPM 安装输出在哪里?我在标准输出和标准错误中找不到它
- mpdf - Symfony 云 MPDF 临时文件不能存储在 /tmp
- wordpress - 如何收听 Gutenberg 区块中的事件?