使用名称空间来处理带阴影的标识符

时间:2013-02-21 03:42:03

标签: random namespaces scheme racket

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

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

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

std::string

Racket是否提供这些内容? 感谢

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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