【发布时间】:2018-02-20 23:58:32
【问题描述】:
我正在使用一些调用 ADJUST-ARRAY 的代码。我从 Lisp 解释器 (CMUCL) 收到一条警告消息,指出不应忽略 ADJUST-ARRAY 的返回值。
如果我没记错的话,在我正在编写的代码中,ADJUST-ARRAY 会修改它的参数。所以没有必要对返回值做任何事情。有没有指定的方法来忽略 Common Lisp 中的返回值?当然,我可以将返回值分配给某个变量,然后忽略该变量。但这感觉很笨拙。
我还可以将返回值分配给 ADJUST-ARRAY 参数,例如:
(setq my-array (adjust-array my-array ...))
但这似乎表明我不确定 ADJUST-ARRAY 是否会修改 MY-ARRAY。
欢迎任何建议,在此先感谢。
【问题讨论】:
-
ADJUST-ARRAY不需要总是修改参数数组。来自hyperspec:“结果是一个与数组具有相同类型和等级的数组,即修改后的数组,或者是一个新创建的数组,可以将数组替换到该数组中,并且具有给定的新维度。” -
有没有办法预测返回的是修改后的数组还是新的数组?也就是说,ADUST-ARRAY 是否总是在某些情况下返回修改后的数组,而在其他情况下总是返回一个新数组。
-
规范没有指定必须做其中一个或另一个的情况。
ADJUSTABLE-ARRAY-P将为可能就地修改的数组返回true,但规范实际上并没有说必须就地修改数组。这取决于实施。 -
回答原始问题可能也很有用。通常可以隐藏编译器警告,具体警告是非标准的。
标签: lisp common-lisp