如何设置变量以指向列表单元格?
我正在尝试编写一个宏来将列表中的所有值乘以一个值.这就是我目前拥有的:
(defmacro scale (areas scale)
`(dotimes (n (list-length ,areas))
(setf (nth n ,areas) (* (nth n ,areas) ,scale))))
Run Code Online (Sandbox Code Playgroud)
我担心这不是最有效的做事方式,因为我两次查看第n个细胞.我宁愿设置一个变量来指向第n个单元格,这样setf可以修改该单元格的值,并*可以在其计算中使用该单元格的值.
更好的方法是使用dolist并将变量设置为单元格引用.这是可能吗?
虽然我在这里,当你有一个单元格时,是否也可以在列表中获取下一个单元格.有点像迭代器,这样我可以做类似的事情:
(let ((area (car areas))
(loop while area do
(setf area (* area scale))
(setf area (next area))))
Run Code Online (Sandbox Code Playgroud)
但我不知道如何区分设置指针或设置引用单元格的值.
我希望我有道理:)
假设我有四个打包的整数.
__m128i val = _mm_set_epi32(42,64,123,456);
Run Code Online (Sandbox Code Playgroud)
在val中翻转四个整数的符号(乘以-1)的最快方法是什么?