代码之家  ›  专栏  ›  技术社区  ›  Joel

正确使用解构绑定

  •  3
  • Joel  · 技术社区  · 14 年前

    我正在进行如下的解构绑定实验:

    (destructuring-bind
               (a  b) '(1  2) (list a b)))
    

    当我在REPL中对此进行评估时,我得到:

    READ from #1=#<INPUT STRING-INPUT-STREAM>: an object cannot start with #\)
       [Condition of type SYSTEM::SIMPLE-READER-ERROR]
    

    我希望结果是

    (1 2)
    

    在上面代码的上下文中,这个错误对我没有任何意义。

    我意识到我只是绑定了一个简单的参数列表,而不是一棵树,但我仍然希望它能起作用。关于我哪里出了问题有什么线索吗?

    2 回复  |  直到 14 年前
        1
  •  11
  •   Demosthenex    14 年前

    去掉多余的)在最后。工作正常。

        2
  •  4
  •   Rainer Joswig Michael Fox    14 年前

    当我们在做的时候,通常的格式是:

    (destructuring-bind (a  b)
        '(1  2)
      (list a b))
    

    这也使我们更容易看到括号是如何匹配的。通常编辑也会帮忙。将光标放在右括号后应突出显示相应的左括号。还要注意,所有具有自尊心的Lisp语法能力的编辑器都有一个查找不匹配括号的命令。