Emacs
如何編寫這樣的 elisp 函式
我正在嘗試編寫這樣的
elisp
函式:(setq lst '(("abc" . "c") ("cde" . "f"))) (foo "a" lst) ;=>"c" (foo "b" lst) ;=>"c" (foo "c" lst) ;=>"c" (foo "d" lst) ;=>"f"
我知道第一個字元串是否與我可以使用的鍵字元串相同
assoc
。(setq lst '(("a" . "c") ("d" . "f"))) (cdr (assoc "a" lst)) ;= "c" (cdr (assoc "d" lst)) ;= "f"
我可以通過單獨編寫來啟用該功能
lst
,但我認為這不是最好的方法。(setq lst '(("a" . "c") ("b" . "c") ("c" . "c") ("c" . "f") ("d" . "f") ("f" . "f") ))
有人可以幫助我如何編寫函式
foo
嗎?
我不是 elisp 專家,但這有效。或者在emacs.stackexchange上詢問。
(defun foo (ch lst) (when lst (if (string-match-p ch (car (car lst))) (cdr (car lst)) (foo ch (cdr lst)))))