racket - 删除元素后,在 Racket 中的列表中使用相同名称时出现问题

标签 racket

我正在尝试在 Racket 中创建一个简单的 Hangman 应用程序。我使用列表数据结构来保存字母表中的字母,并在玩家从列表中猜测字母时删除玩家猜测的字母。但是,我收到以下错误:

(define unguessed-letters (remove "a" unguessed-letters)) define-values: assignment disallowed;
cannot re-define a constant
constant: unguessed-letters

看起来我无法在列表更改后重新使用“未猜出的字母”?有没有办法解决这个问题或者我应该采取不同的方法?

最佳答案

要将新值分配给现有变量,您可以使用set!:

(set! unguessed-letters (remove "a" unguessed-letters))

但是,如果您使用 set! 来改变这样的变量,那么您正在执行所谓的命令式编程。尽管 Racket 中允许这样做,但这通常不是最好的方法。请参阅Guidelines for Using Assignment .

关于racket - 删除元素后,在 Racket 中的列表中使用相同名称时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038902/

相关文章:

oop - 在Scheme中创建带有变量的环境

list - Typed Racket 是否提供类型安全的 list-ref 函数?

parsing - 方案/ Racket : How to do repeating in defining syntax

racket - 如何在 DrScheme 中包含文件?

web-applications - 有没有办法让 Racket Web 应用程序中的按钮调用文件中定义的函数?

syntax - Lambda表达式的正确语法,该语法在Scheme中获取任意数量的参数

list - 为什么 range 会在 Racket 中抛出标识符错误?

racket - Racket 允许函数重载吗?

racket - 从 Racket 的当前目录加载模块

dictionary - 通过应用给定的操作将矩阵转换为向量的函数