c - *= Common Lisp 中的操作

标签 c arrays common-lisp

我想知道Common Lisp中是否有一些函数/宏具有与C/C++中的*=/=操作类似的功能。

Common Lisp中的

incfdecf可以认为是+=-=

在 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/

相关文章:

c - 逻辑SSE内部函数之间有什么区别?

c - linux kernel/sched.c - find_process_by_pid - 如何从 C 应用程序代码中使用它

javascript - 填充二维数组 "line by line"JavaScript/NodeJS

mongodb - 如何使用 cl-mongo 运行 findAndModify?

c - 在 C 中使用 foo() && 0 安全吗?

C 从字符串的一部分获取数值

javascript - 使用 ng-repeat in Angular 从二维数组构建表格

python - B 在 A 中的值(value)位置索引

multithreading - 在多线程代码(通用Lisp)中使用库函数

lisp - lisp 中的 '((1 2)(3 4)) and ' ('(1 2 )' (3 4)) 有什么区别?