Elisp快速自学笔记(1)基本语法与数据类型

原创
2021/09/07 15:06
阅读数 240

关于Elisp

  • Lisp方言
  • 常用于配置Emacs或者编写Emacs插件
  • 其他更多,知道以上两点即可

基本语法初体验

(defun get-name (name)
  "Get the name of NAME."
  (message "%s" name))

基本特点:

  • 函数式编程
  • 括号

体验了上面两点之后,我们就直接进入到语言的学习了。

数据类型

布尔类型

  • 真,t
  • 假,nil

使用判等来体验一下真假。

(eq 1 1)     ;; t  eq判断是否是相同的对象
(eq 3.1 3.1) ;; nil
(eql 3.1 3.1);; t  eql判断是相同或者值相等
(equal 3.1 3.1);; t  equal判断是否值相等
(equal "string" "string") ;; t

数字类型

  • 整数
  • 浮点数

操作符

(+ 2 3)
(- 3 2)
(* 2 3)
(/ 3 2)
(% 3 2)

整数与浮点数转换

  • truncate,向0方向取整
  • round,四舍五入
  • floor,下取整
  • ceiling,上取整

类型判断

  • integerp
  • floatp
  • numberp
  • zerop

比较

  • =
  • <
  • >
  • <=
  • >=
  • min
  • max

字符

  • ?A

还有其他的类型,但常见的是这种,够用了。

序列

  • 字符串
  • 列表
  • 数组

以上都被认为是序列。

  • sequencep,判断是否是序列
  • length,获取序列长度
  • elt,获取序列中特定位置的元素

字符串

  • 直接使用双引号括起来
  • 使用make-string进行初始化
  • 使用string进行初始化
  • stringp来判断是否是字符串
  • string-or-null-p
  • char-or-string-p

字符串的比较

  • string=
  • string<
  • string>

字符串的常用函数

  • substring,获取子串
  • concat,字符串拼接
  • split-string,字符串分隔
  • format,字符串格式化(%s,%d……)
  • * message方法也支持字符串格式化

List列表

这常用的数据类型。

Cons Cell

这个名词一直不太知道该怎么翻译,非空列表?首尾列表?

(cons 1 2) ;; '(1 . 2)

通过以下方法可以进行操作:

  • car获取首个元素
  • cdr获取剩余的元素列表
  • setcar设置首个元素
  • setcdr设置剩余元素

常见的列表判断方法

  • listp
  • consp

alist

类似于从键值对中获取值。举例:

(setq slist '((one . 1)
              (two . 2)))

(alist-get 'one slist) ;; 1

plist

与alist类似,但类似于属性取值。举例:

(plist-get '(one 1 two 2) 'one)

逻辑运算符

  • and
  • or
  • not

注意,在Elisp中,只有nil和空list会被认为是nil,其他的所有值都被认为是逻辑真。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部