如何忽略Common Lisp中的返回值

时间:2018-02-20 23:58:32

标签: lisp common-lisp

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

在我正在处理的代码中,如果我没有弄错的话,ADJUST-ARRAY会修改它的参数。所以没有必要对返回值做任何事情。是否有指定的方法来忽略Common Lisp中的返回值?当然,我可以将返回值赋给某个​​变量,然后忽略该变量。但那感觉很笨拙。

我还可以将返回值分配给ADJUST-ARRAY参数,例如:

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

但这似乎暗示我不确定ADJUST-ARRAY是否会修改MY-ARRAY。

欢迎任何建议,谢谢。

2 个答案:

答案 0 :(得分:4)

你是对的。正如the documentation所述:

  

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

如果结果是新创建的数组,那么该函数当然会对参数产生无效

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

答案 1 :(得分:3)

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

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

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