请问这里用 elisp 比较字符串是否相等的过程中哪里出错了?

代码如图所示.

其中 prin1-to-string 是将输出结果转换为字符串的函数 (见图中粉色 <1>).

希望解决的问题: 比较字符串 (prin1-to-string (current-buffer)) 与其执行结果 "#<buffer *ielm*>" 是否相等.

遇到的问题:

  1. 见图片红色箭头 (1) 处, 并根据图片中标注代码 <3>, (eq "#<buffer *ielm*>" (prin1-to-string (current-buffer))) 期望值为 t 而运行结果为 nil. 请问原因是?

  2. 根据标识 <1> <2> 可见二者数据类型相同, 但使用 = 进行比较时提示红色箭头 (2). 请问原因是?

善用C-h f,你这两个问题应该很容易回答。你自己看下吧,我就不转述帮助内容了。

另外,赞一下你的问题本身,直观明了。

2 个赞

equal, eq, = 这几个还是有点区别的,具体看 C-h f,

判断字符串是否相等用 string= 比较好

1 个赞

已解决, 感谢指导! 当前对 Elisp 已经有更深一步认识.

1 个赞

想问下这个交互式界面是啥程序? 目前除了 eval-region 之类的函数, C-c C-e, 以及 org babel 就不知道别的, 觉得这是个不错的学习工具

M-x ielm

1 个赞