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

Van*_*ice 4 random scheme namespaces racket

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

(define (random)
  (random (10))) ; should be random number call
Run Code Online (Sandbox Code Playgroud)

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

std::string

Racket是否提供这些方面的任何内容?谢谢

dyo*_*yoo 6

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

#lang racket
(require (prefix-in std:: racket))
(define (* x)
  (std::* x x))
Run Code Online (Sandbox Code Playgroud)

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

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

#lang racket
(require (prefix-in r: racket))
(define (* x)
  (r:* x x))
Run Code Online (Sandbox Code Playgroud)