213_emacs lisp判断文件是否存在

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

    https://github.com/GreyZhang/g_lisp

    继续分析spacemacs的配置,代码如下:

    上次看得也是这一段代码,但是关注点放到了when条件分支。这一次分析一下里面的另一个函数file-exists-p。

    首先看一下emacs的内置帮助:

    功能就是判断文件是否存在,不管是否拥有读的权限。这个函数是通过C代码实现的,因此可以看得出这个要么是最基础的功能要么是需要很高的效率。猜测,这个应该主要是因为考虑了基础的功能构建才使用了C实现。

    分析到这里,其实是有一个问题的。这个函数是判断文件存在性的,但是从代码的设计含义来看的话,这个应该是用来判断目录的。或许,这又是unix思想的体现,一切全都是文件?

    看看elisp的文档:

    这个文档中的信息描述就更加准确了,明确的说明了目录也是文件。接下来做几个测试:

    目录测试通过。

    文件测试通过。

    不存在的文件测试通过,目录姑且不去测试了。

    这样,这整个函数的功能就弄清楚了:传入一个目录信息,如果目录存在的时候加入到load-path中。不存在的时候,不执行操作。看起来,我前面担心的文件检查问题是在这一层做掉了。这样的话,之前分析的函数add-to-load-path应该尽量不能够开放给普通用户以免出现健壮性设计问题。

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

    https://github.com/GreyZhang/g_lisp

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

猜你喜欢

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