mik*_*keb 0 emacs recursion elisp
我有一个emacs lisp列表,上面写着:
(setq states '(
Nebraska
NE
Nevada
NV
New Hampshire
NH
New Jersey)
)
Run Code Online (Sandbox Code Playgroud)
我创建了一个只打印状态名称的函数,而不是缩写:
(defun names (los)
"Get names from list of states"
(when los
(print (car los))
(names (cdr(cdr los)))
)
)
Run Code Online (Sandbox Code Playgroud)
我把这个函数称为:(names states)和get
Nebraska
Nevada
New
NH
Jersey
Run Code Online (Sandbox Code Playgroud)
如何告诉我的lisp函数(或设置我的列表),以便单词中的空格不是分隔符,只有换行符是分隔符?
谢谢
Elisp将空格视为分隔符.要回答当前的问题,你可以像帕特里克在他的评论中所建议的那样做,并将字符串放在引号中.
更广泛地说,您应该考虑使用关联列表或属性列表,因为它们是为您考虑的任务而设计的.阅读assoc并plist-get了解更多信息.例子:
alist版本看起来像:
(setq states-alist '((NH "New Hampshire")
(NE "Nebraska")
(NV "Nevada")))
(cadr (assoc 'NH states-alist))
Run Code Online (Sandbox Code Playgroud)
plist版本看起来像:
(setq states-plist '(NH "New Hampshire"
NE "Nebraska"
NV "Nevada"))
(plist-get states-plist 'NH)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |