改进Elisp条件表达式

Tal*_*Kit 4 elisp

以下伪代码的elisp代码

if "the emacs version is less than 23.1.x"
do
  something
else
  something-else
Run Code Online (Sandbox Code Playgroud)

写成

(if (or (< emacs-major-version 23)
        (and (= emacs-major-version 23)
             (<= emacs-minor-version 1)))
    (setq color-theme-is-global t)
  (color-theme-initialize))
Run Code Online (Sandbox Code Playgroud)

如何优化上面的代码,以便"emacs-major-version"不会被引用两次.

Mic*_*ert 11

没有必要,有version<=emacs-version

(if (version<= emacs-version "23.1")
    (setq color-theme-is-global t)
  (color-theme-initialize))
Run Code Online (Sandbox Code Playgroud)

  • 它是`emacs-version`而不是`(emacs-version)`.对于`version <=`的工作原理,请参阅文档字符串,`Ch f version <=`. (2认同)