201_emacs lisp-字符串连接

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

         https://github.com/GreyZhang/g_lisp

         今天学习的代码还是来自于spacemacs的配置文件,有如下配置:

         里面用到了一个函数concat,功能是用于字符串的连接。具体的描述如下:

         这个很容易理解,其实这里这个函数或许完全没必要用,直接使用一个长一点的字符串即可。我自己修改测试,注入了一个错误的参数信息后让这段代码执行,测试验证了我的猜测。

         从函数的描述看,这个函数能够连接的可能不仅仅是两个字符串。接下来,做几个简单的测试学习一下这个函数的使用。

1,两个字符串连接

2,单个字符串连接

         其实,这个算不上连接了,毕竟只有一个字符串。或许是自己工作中养成的一点点测试的习惯让我做了这么一个测试吧。

3,多个字符串的连接

         从函数功能描述看,这个函数还是可以作用域vector的。我不清楚vector是一个什么概念,好在之前下载了一份elsip的官方文档,查了一下这是一个elisp编程类型中的一种。全部的elisp编程类型如下:

         顺带提一下,elisp中的数据类型大致可以分为两大类,一个是编程类数据类型,还要一个是编辑类的数据类型。而vector是编程类数据类型中的一个,接下来直接看看这个数据类型相关的信息。这次学习的主要计划就是通过较为深度的配置文件的学习,掌握部分实用的elisp,其他的数据类型学习暂且先不去看了。

         从文档信息看,这个类型其实是作为一个const来对待的,不同于lisp的列表,vector访问任何一个元素的时间都是相同的。而列表的访问速度其实是跟元素在列表的偏移位置相关的,这个概念我也算是第一次知道,又算是长经验了。在表示方式上,vector使用的是方括号来进行区间界定。

         基于上面的理解,做一下vector连接的测试:

         从文档看,这个vector的元素其实还是有限定的,也就是一系列的整形。我们换个方式测试:

         看得出,提示出了类型错误。

         修改测试,再次运行出了结果。看起来,这里接受的字符应该是ASCII码。再次测试如下:

         看起来,猜测准确。最后,再做一个超出ASCII码范围的测试:

         没有报错,但是打印出了乱码。

         附加一个我在官方文档中找到的例子:

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

         https://github.com/GreyZhang/g_lisp

 

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

猜你喜欢

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