我尝试从
system-type
生成值,就像在具有早期返回模式的常见 Pascal 函数中一样:
{ ASSUMING system_type is a global VAR }
FUNCTION font_name: String
BEGIN
result :='Courier';
IF system_type = 'darwin' THEN Exit('Menlo');
IF system_type = 'gnu/linux' THEN Exit('Monospace');
END;
但找不到合适的表达方式:
片段
(defmacro font-name ()
(declare (indent defun))
`(when (eq system-type 'darwin) "Menlo")
`(when (eq system-type 'gnu/linux) "Monospace")
"Courier")
尽管有系统类型“达尔文”,但总是给我“信使”。
这个可以工作,但是需要嵌套 if else...
(defun i4w-editor-font ()
(if (eq system-type 'darwin)
"Menlo"
(if (eq system-type 'gnu/linux)
"Monospace"
"Courier")))
是否有可能编写“提前返回”模式。
第一件事是:没有必要就不要定义宏,也没有必要是宏。宏是一个完全独立的主题,但是(与函数一样)返回值是最终形式,因此对宏的any调用会扩展为
"Courier"
。
这个可以工作,但是需要嵌套 if else...
还有其他条件结构:
(defun i4w-editor-font ()
"Return font according to `system-type'."
(cl-case system-type
('darwin "Menlo")
('gnu/linux "Monospace")
(t "Courier")))