200_emacs lisp-版本号大小判断

         完整的common lisp的学习集合整理如下:

         https://github.com/GreyZhang/g_lisp

         最近身体状态有待调整,今天晚上整理完这个小的知识点之后休息。这个小的知识点是一个版本号的判断。

         这个功能还是从熟悉我自己现在用的emacs配置开始认识到的,我看到的源代码如下:

         上面的部分编程元素还没有做过学习,姑且先按照自己的理解来了。直接按照直白的语言元素理解应该是:判断spacemacs所需要的最低的emacs版本是否小于或者等于当前的emacs的软件版本。如果上述的判断不满足,就应该报错。

         关于emacs的版本的变量,我们再查一下具体的文档说明信息:

         这个变量是在C代码中定义的,当前的数值为26.3,也就是我现在用的emacs的版本。我现在用的emacs的版本文件夹名称没有改动过,如下:

 

         可以看得出,这个一致性是没问题的。这个变量是在C代码中定义的,代表emacs的版本号,其实是一个字符串。Emacs的版本号是一个三段式的定义方式,分为主版本号、小版本号以及微版本号(暂且这么翻译了)。其中,微版本号是在未发布的版本中才存在的。这也可以看得出,我现在用的emacs是一个发布了的正式版本。其他的信息,先不关注了。回到前面的版本号的判断函数。

         Version<=,这是一个很有意思的函数,尤其是习惯了C语言的我看到这个函数的原型的时候楞了一下。新乡,难道version是一个命令?难道<=是一种特殊的表达式?好在emacs有一个自动的提示,瞬间提示我这个函数接收两个参数。这时候,我才意识到,这是lisp,函数的名称定义规则更加灵活。关于这个函数的相关介绍如下:

         接下来,做一下这个函数的测试。顺便一说,查看这个函数的说明的时候,看到了几个其他的函数,稍后我会一起做一下测试。

         首先看一下version:

         这个其实是emacs-version的别名。忽略掉可选参数执行如下:

         可以打印出emacs的版本信息。看起来,emacs的版本号的对比处理的就是这一串字符串。

         接下来,看看version<、version<=:

         这里列出了一个比较的规则:1后面的一堆0会被处理掉;1高于1pre(可以理解为预发布?)高于1beta(beta版本)高于1alpha(alpha版本)高于1snapshot(验证版)。查看了一下version<=函数,描述类似

         测试如下:

这里需要注意的一点:这个emacs-version是一个函数也是一个变量!

         看得出,这个alpha以及beta的大小写是没有关系的。

         今天,尝试尝试的内容不少,但是实质性的编程上的提升可能不多。算是给自己科普了一部分尝试吧!

                  其他的lisp相关的学习笔记汇总,可以参考如下链接:

         https://github.com/GreyZhang/g_lisp

 

发布了812 篇原创文章 · 获赞 163 · 访问量 172万+

猜你喜欢

转载自blog.csdn.net/grey_csdn/article/details/104162177