我想知道Common Lisp中是否有一些函数/宏具有与C/C++中的*=或/=操作类似的功能。
Common Lisp中的incf
和decf
可以认为是+=和-=。
在 C/C++ 中
A *= 2;
等于
A = A * 2;
在普通 Lisp 中
当我想给一个数组元素设置一个新值时,我必须这样写
(setf (aref arr i) (* (aref arr i) 2))
访问数组的语句要写两次,如果有一个函数/宏mulf
有类似*=的功能在C语言中。
我可以这样写代码
(mulf (aref arr i) 2)
那么数组访问语句只需要写一次。
谢谢。
最佳答案
如评论中所述,这可以使用 DEFINE-MODIFY-MACRO 轻松创建.
(define-modify-macro mulf (x) *)
关于c - *= Common Lisp 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43539051/