Как получить доступ к значению переменной внутри списка? - PullRequest
1 голос
/ 26 сентября 2019

Я новичок в ELisp и не могу установить значение переменной для доступа позже.Я прочитал документацию о доступе к значениям переменных и попробовал ответы в этой теме , но я все еще получаю Wrong type argument: char-or-string-p.

Вот вывод моей *scratch* Буфер Emacs, который запускает код и вставляет его после любых побочных эффектов:

(defvar my-var "var"  "Some documentation")
my-var

my-var
"var"

(symbol-value 'my-var)
"var"

Я могу перебрать список, составленный из значения в виде литерала:

(dolist (v '("var"))
  (insert v))
varnil

Нокаждая из этих попыток повторения значения в качестве переменной завершается с ошибкой Wrong type argument: char-or-string-p:

(dolist (v '(my-var))
  (insert v))

(dolist (v '((format "%S" my-var)))
  (insert v))

(dolist (v '((symbol-value 'my-var)))
  (insert v))

Как выполнить итерацию по списку, составленному из значений переменных?

1 Ответ

3 голосов
/ 26 сентября 2019

Вам нужно либо оценить свои переменные:

(dolist (v (list my-var))
  (insert v))

, либо получить значения самостоятельно:

(dolist (v (list 'my-var))
  (insert (symbol-value v)))

Если вы хотите смешать переменные и литералы, используйте первый подход:

(defvar my-var "var"  "Some documentation")

(dolist (d (list my-var
                 "other-var"))
  (insert d))

См. Также Когда использовать '(или цитату) в Лиспе?

...