我正在使用一些调用ADJUST-ARRAY的代码。我从Lisp解释器(CMUCL)收到一条警告消息,不应忽略ADJUST-ARRAY的返回值。
在我正在处理的代码中,如果我没有弄错的话,ADJUST-ARRAY会修改它的参数。所以没有必要对返回值做任何事情。是否有指定的方法来忽略Common Lisp中的返回值?当然,我可以将返回值赋给某个变量,然后忽略该变量。但那感觉很笨拙。
我还可以将返回值分配给ADJUST-ARRAY参数,例如:
(setq my-array (adjust-array my-array ...))
但这似乎暗示我不确定ADJUST-ARRAY是否会修改MY-ARRAY。
欢迎任何建议,谢谢。
答案 0 :(得分:4)
你是对的。正如the documentation所述:
结果是一个与数组相同类型和等级的数组,即 修改后的数组,或新创建的数组到哪个数组 可以被取代,并且具有给定的新维度。
如果结果是新创建的数组,那么该函数当然会对参数产生无效。
Common Lisp几乎总是要求您使用返回的值而不是旧的绑定来获得可移植的代码。
答案 1 :(得分:3)
adjust-array
的规范是调整后的数组是返回的数组。
之后对参数数组的期望是有点复杂,在某些情况下可能会在实现之间有所不同。
只需使用返回的那个。您可以使用setf
修改或let
来创建绑定。