"设置!:没有一个标识:..."血小板方案错误
-
18-09-2019 - |
题
什么是错的这个代码博士方案使用相当大的?我似乎记得做类似的事情过去没有问题。
(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!
在这方面?
希望你承认我有一个称为结构 Frame
与 variables
领域,这是一个列表。
解决方案
问题:
如何设置!工程。什么这真的不是结合一个名称的对象是挂在内存在的地方。当你设置!, 它改变什么名称。
这是错误: (Frame-variables res)
是不是一种标识,所以它不能使它指别的东西。
该修正:
什么你想要做的是变异的成员结构。你需要做的是改变这种结构的构件是可变的,随后使用的增变,将会作出修改。
(define-struct frame (a b ... c [variables #:mutable] e ...))
然后,你可以使用
(set-frame-variables! res (list "new" "value"))
这会改变你的结构如所希望的。
的演讲:
我想知道如果你选择一个好的设计对你的节目。变异和追加的一列表中都是操作的,让我问一个设计方案。
此外,它看起来像什么你这样做是试图维持一个关联变量清单,基于什么你所谓的他们。这不是真的有效,并或许你应该考虑的东西别想一个 哈希表
相关文件:
不隶属于 StackOverflow