代码之家  ›  专栏  ›  技术社区  ›  Robert Dodier

如何在Common Lisp中忽略返回值

  •  1
  • Robert Dodier  · 技术社区  · 7 年前

    我正在使用一些调用ADJUST-ARRAY的代码。我从Lisp解释器(CMUCL)收到一条警告消息,不应忽略ADJUST-ARRAY的返回值。

    在我正在处理的代码中,如果我没有弄错的话,ADJUST-ARRAY会修改它的参数。因此,无需对返回值进行任何操作。是否有指定的方法可以忽略Common Lisp中的返回值?当然,我可以将返回值赋给某个变量,然后忽略该变量。但这感觉很笨拙。

    我还可以将返回值赋给ADJUST-ARRAY参数,类似于:

    (setq my-array (adjust-array my-array ...))
    

    但这似乎表明,我不确定ADJUST-ARRAY是否会修改MY-ARRAY。

    欢迎提出任何建议,提前感谢。

    2 回复  |  直到 7 年前
        1
  •  4
  •   Sylwester    7 年前

    你是对的。像 the documentation 国家:

    结果是一个与数组类型和秩相同的数组,即 修改后的数组, 或新创建的数组 到哪个阵列 可以被替换,并且具有给定的新维度。

    如果结果是新创建的数组,那么函数当然会 无影响 关于论点。

    公共Lisp几乎总是要求您使用返回值,而不是旧的绑定,以获得可移植的代码。

        2
  •  3
  •   Svante    7 年前

    的规范 adjust-array 调整后的数组就是返回的数组。

    之后的参数数组有点复杂,在某些情况下,不同的实现可能会有所不同。

    只需使用返回的一个。您可以使用 setf 修改或 let 创建绑定。