我在elisp
中有以下模式匹配表达式:
(pcase (cadr x)
(S "\u2660")
(D "\u2666")
(C "\u2663")
(H "\u2665")
(_ "error"))
考虑(setq x (3 'H))
显然,我们希望输出与" \ u2665"匹配,但它匹配" \ u2660。"这是什么S.这里发生了什么?如何获得此模式匹配语句以匹配正确的符号?
感谢您的帮助。
答案 0 :(得分:1)
您需要使用“QPattern”(请参阅C-h f pcase
)来匹配特定符号。这对我有用:
(let ((x '(3 H)))
(pcase (cadr x)
(`S 1)
(`H 3)
(_ "error")))
;; => 3