Emacs的setf真厉害
我学Emacs Lisp比较随意 这是少数几个让我眼前一亮的特性 立马记录下来
Emacs的setf
很厉害 不信的话你可以看一下大神写的介绍 简单用大神讲解的例子演示一下它和正常的setq
的不同
1 | (let ((world "world")) |
这里实现了对字符串的替换 被替换的内容就是(substring world 2 4)
执行的结果 也就是说 第一个参数指定的内容(也可以是个符号的参考也可以是一个普通符号)会被第二个参数的值替代 换句话说setf
是更为通用的setq
上面的例子启发了我 因为就在今天 有人问 如何把buffer里面从start到end的内容替换为某个字符串
在不知道setf
以前我的写法是这个样子的
1 | (progn |
如果用setf
是这样的
1 | (setf (buffer-substring 4 8) "Emacs Rules!") |
实现的功能是一样的 都是在scratch
里替换This为"Emacs Rules!" 哪个好?
Update:
之前以为这个和function cell有关 是错的 那个是fset
这俩名字太类似了 容易把人搞糊涂
或者您可以把评论发在别处,添加指向本页的连接,然后把网址告诉我:
本文标题:Emacs的setf真厉害
文章作者:Chris
发布时间:2015-11-25
最后更新:2022-03-23
原始链接:https://chriszheng.science/2015/11/25/The-power-of-setf/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!
分享