Ben let
blok yerel değişken tanımları için kabul aynı yapıyı üretmek için çalışıyorum ama bir duvara isabet ediyorum: Verilen bu parse
işlevi:Marka sembolü ve assq hakkında ne kaçırdım?
(defun parse (string)
(mapcar (lambda (line)
(let* ((k_v (split-string line "="))
(key (make-symbol (first k_v)))
(val (second k_v)))
(list key val)))
(split-string string "\n" t)))
Ben lisp-etkileşiminde aranan çıktı neye benzediğini olsun biçem:
(setq alist (parse "foo=bar\nbaz=quux\n"))
((foo "bar") (baz "quux"))
göz önüne alındığında ...
(assq 'foo '((foo "bar") (baz "quux")))
(foo "bar")
… Aynı sonucun aşağıda olmasını beklerdim - neyi özlüyorum?
(assq 'foo alist)
nil
Emacs versiyonları önemliymiş çok şaşırırım iken
, ben OSX'te Emacs 24.2 (9.0) 'de bu test ettik.make-symbol
belgelerine
Teşekkürler! Ben sadece '(make-symbol "foo")' nun 'eşit' ya da 'eq' 'foo' olmadığını ve daha da karışık olduğunu hissetme noktasını bulmuştum. :-) – ecmanaut
@ecmanaut Yardım etmekten mutluluk duyarım. – michaelb958