Elisp:计算函数时“符号作为变量的值为空”

问题描述 投票:0回答:1

在评估以下函数时,我得到“符号作为变量的值为空:s”

(defun str-to-sym () (interactive)
      (sx (kill-sexp 1)
      (let ((s (read (car kill-ring))))
    (insert (downcase (reps s " " "-"))))
    ))

sx 是 save-excursion 的别名。

评估以下内容

    (let ((s (read (car kill-ring))))
       (message "!!: %s" s))
 
   => !!: quote''

但我认为,在函数 str-to-sym 之外评估本质上相同的构造是可行的。

发生什么事了??

emacs
1个回答
0
投票

问题可能重复。

但你的问题是,你将

s
引用为
(insert (downcase (reps s " " "-")))
中的变量,但你没有将
s
绑定为变量(例如,使用
let
)或为其分配任何值(例如,使用
setq
)。

您将

sx
绑定为变量,但您尝试评估变量
s
。打字错误?

© www.soinside.com 2019 - 2024. All rights reserved.