什么是错的这个代码博士方案使用相当大的?我似乎记得做类似的事情过去没有问题。

(lambda (x y) (set! (Frame-variables res) (append (Frame-variables res) (list (cons x y)))))

其返回的以下错误:

set!: not an identifier in: (Frame-variables res)

如果我忽略 (set! (Frame-variables res) ... ) 部分,它工作得很好当然除了我的名单实际上并没有改变。因此它认识到第二次 (Frame-varialbes res) 但不是第一个?或是什么 set! 在这方面?

希望你承认我有一个称为结构 Framevariables 领域,这是一个列表。

有帮助吗?

解决方案

问题:

如何设置!工程。什么这真的不是结合一个名称的对象是挂在内存在的地方。当你设置!, 它改变什么名称。

这是错误: (Frame-variables res) 是不是一种标识,所以它不能使它指别的东西。

该修正:

什么你想要做的是变异的成员结构。你需要做的是改变这种结构的构件是可变的,随后使用的增变,将会作出修改。

(define-struct frame (a b ... c [variables #:mutable] e ...))

然后,你可以使用

(set-frame-variables! res (list "new" "value"))

这会改变你的结构如所希望的。

的演讲:

我想知道如果你选择一个好的设计对你的节目。变异和追加的一列表中都是操作的,让我问一个设计方案。

此外,它看起来像什么你这样做是试图维持一个关联变量清单,基于什么你所谓的他们。这不是真的有效,并或许你应该考虑的东西别想一个 哈希表

相关文件:

http://docs.plt-scheme.org/reference/define-struct.html#(form._((lib._scheme/base..ss)._define-struct))

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top