Emacs Lisp基础数据类型
来源:互联网 发布:linux应用增量更新 编辑:程序博客网 时间:2024/06/07 15:49
Table of Contents
- 1. List Data Types
List Data Types
- 基本类型有: integer, float, cons, symbol, string, vector, hash-table, subr, byte-code function
- 字符一般以?开头,如(print ?A) => A
Symbol: lisp object的符号表示,用来表示object的名称 (symbol-name ‘foo) => “foo”
- symbol按照存储方式分为两类,一类属于系统symbol,存储在bucket obarray中;一类属于编程使用symbol,使用make-symbol创建,在obarray中查找不到。
常用函数
func-nameusagedescsymbol-name(symbol-name ‘foo) => “foo”获取symbol名称,返回字符串名称make-symbol(setq sym (make-symbol “foo”)) => foo (eq sym ‘foo) => nil创建非obarray的symbolintern(setq sym (intern “foo”)) => foo (eq sym ‘foo) => t创建obarray 的symbolintern-soft(setq sym (intern “frazzle”)) => frzzle (intern-soft “frazzle”) => frazzle测试symbol是否存在mapatoms(setq count 0) => 0 (defun count-sym (s) (setq count (1+ count))) => count-sym (mapatoms ‘count-syms) => nil count => 1871 unintern delete a symbol in obarray变量
var-namedescobarrayit’s a hash-table, used to stored intern symbol
String相关函数
func-name desc stringp objcheck whether object is string typestring-or-null-p objret t if obj is a string or ‘nil’char-or-string-p objret t if obj is a string or charmake-string cnt charret a string made up of COUNT repetitions of CHARstring &rest charsret a string containing the CHARssubstring string st &opt end(substring “abcdefg” 0 3)=> “abc”substring-no-properties str &opt st endlike substring but discards all text propertiesconcat &rest sequencesret new string containing sequencessplit-string str &opt sep omit-nulls trimsplits STRING into substringsvar: split-string-default-separatorssplit-string default sepLists
Association Lists
关联链表,如: ‘((a . 1)(b . 2))为key, value的键值对,通过相关函数可以做查询,存取操作。
‘(a . 1) 和 ‘(a 1)的区别,’(a . 1)是 a和1组成的,而’(a 1)是a和(1)组成。相关函数
assoc key alist
获取第一个匹配key对应的键值对,如:(assoc 'a '((a . 1) (b . 2) (a . 3))) => (a . 1)
rassoc value alist
获取第一个匹配value值的键值对,如:(rassoc '1 '((a . 1)(b . 2)(c . 1))) => (a . 1)
assq key alist
和assoc相同,唯一区别使用eq函数进行比较,而assoc使用的equal比较。如:(setq leaves '(("simple leaves" . oak)("compound leaves" . horsechestnut)))(assq "simple leaves" leaves) => nil(assoc "simple leaves" leaves) => ("simple leaves" . oak)
rassq value alist
同assq对应,使用eq比较函数- assoc-default key alist &opt test default
copy-alist alist
拷贝alist, 为取值拷贝,非地址拷贝。如:(setcdr (assq 3 copy) '("Martian Vacuum Pine"))(cdr (assq 3 needles-per-cluster)) => ("Pitch Pine")
assq-delete-all key alist
返回删除alist所有匹配key取值的键值对,这个函数会破坏入参alist。
如:(setq alist '((foo 1) (bar 2) (foo 3) (lose 4)))=> ((foo 1) (bar 2) (foo 3) (lose 4))(assq-delete-all 'foo alist)=> ((bar 2) (lose 4))alist=> ((foo 1) (bar 2) (lose 4))
rassq-delete-all value alist
0 0
- Emacs Lisp基础数据类型
- emacs lisp 基础 1
- emacs lisp 基础 2
- Emacs LISP
- emacs lisp
- common lisp for emacs
- Emacs Lisp[转载]
- Emacs Lisp语言
- emacs lisp 笔记
- Emacs Lisp List
- Emacs+Lisp环境搭建
- emacs lisp 语言基本概念
- Emacs Lisp 常见编程
- emacs 中使用lisp
- Emacs lisp入门
- Emacs&&Lisp学习
- LISP基础
- 有趣的 emacs lisp 教程
- 年轻?大有所为!——问题集二 元素居中
- 文章标题
- 前沿技术:FaceBook推出的Android图片加载库Fresco
- 【内部排序】七:堆排序(Heap Sort)详解与代码(超详细注释版)
- kill Process based on port number
- Emacs Lisp基础数据类型
- 动态链接库 笔记
- HTTP协议讲解
- (连载)Java基础学习001
- java基础2
- JavaScript变量的声明
- (转)mysql 查询json编码过的数据
- Hibernate
- 线程笔记(synchronized)