random - 使用命名空间来处理阴影标识符

标签 random namespaces scheme racket

我正在使用 Racket 开发一个简单的游戏(家庭作业)。要求指示我创建一个名为 random 的计算机播放器,它使用默认的随机数生成器。 这段代码说明了我的问题:

(define (random)
  (random (10))) ; should be random number call

我习惯了命名空间的 C 约定:

std::string

Racket 是否提供类似的东西? 谢谢

最佳答案

您可以使用 prefix-in为标准库的导出加上一些命名空间前缀。例如:

#lang racket
(require (prefix-in std:: racket))
(define (* x)
  (std::* x x))

表明我们可以隐藏来自 #lang racket 的绑定(bind),但仍然可以通过前缀标识符获取它们。

传统上,人们使用的前缀比较简单,例如:

#lang racket
(require (prefix-in r: racket))
(define (* x)
  (r:* x x))

关于random - 使用命名空间来处理阴影标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994153/

相关文章:

perl - 在 Perl 中打乱数组的最佳方法是什么?

javascript - 随机插入但切勿相邻

C++ 全局外部 "C" friend 无法访问命名空间类上的私有(private)成员

Python 命名空间包作为现有包的扩展

c++ - C++ 中从同一命名空间中的类继承的问题

scheme - 如何配置 SublimeRepl 以使用鸡肉方案?

Scheme Sum from a to b 迭代

string - 在 bash 中使用随机可打印字符串创建特定大小的文件

c++ - 如何从 C++ <random> 获得一致的行为

scheme - 如何在 SICP、Scheme、练习 2.78 等中获得 put 和 get 函数