表处理函数
(car <list>)
该函数返回表<list>的第一个顶层元素。非空,返回第一个顶层元素;点对,返回左元素空表;空表,返回nil.
例子:
(car '(x y z))返回值x
注意:返回值的层次与list不同。
(cdr '(x y z))返回(y z)
该函数返回表list中除掉第一个顶层元素后剩下的元素组成的表,表<list>为nil,返回nil;若为点对,返回右元素。
如:
(cdr (x y z))返回值(y z)
返回值的层次与list不一定相同。
注意:car,cdr并不改变表的结构和值
car和cdr的组合函数
AutoLisp接受car,cdr的任意组合,其深度最多4层。组合函数的形式为cxr,cxxr,cxxxr,cxxxxr其中“x"代表A或D,分别表示car,cdr,作用顺序是”先右后左“。
(last <list>)
(nth <n> <list>)
该函数返回表<list>中顶层第n个元素(从0开始)。
表的构造函数与修改函数
(cons <expr1> <expr2>)
它通过把第一个元素加到第二个元素构成一个新表。具体地说。若<expr2>是表,则构成新表;为原子,刚返回一个点对。
(cons 'x '(a b c))返回值是(x a b c)
(cons '(a b c) 'x)返回((a b c). x)
(list <expr>...)
它返回所有<expr>的值(任意S_表达式)构成的表。
(list (+ 5 6) 'c 'd)
返回值(11c d)
(append <list>...)
该函数要求list必须为表。它把所有的参数<list>中的各元素串在一起,组成一个新表返回。
(subst<nenitem> <olditem> <list>)
该函数在表的顶层元素中搜索,把所有的与<olditem>的值相同的元素用<newitem>替换。
注意:
1,只处理顶层元素。
2,若<olditem>没有找到,则不修改。
3,不修改list.
(reverse <list>)
该函数返回list的顶层元素倒排后的新表
联结表(Assocoation list),又称A-表,它是以点对或子表为元素的表。它可以表示为一个映射:<关键字集>-><数据集>,其中<关键字集>由每个点对或子表car组成,<数据集>由每个点对或子表cdr全体组成。
(assoc <key> <alist>)
搜索给定的联结表<alist>以找到选定的关键字<key>,然后返回包含关键字的第一个子表(或点对)中,没有找到返回nil.
注意:1,只在顶层找。
2,关键字相同的点对或子表,则assoc只返回前面的点对或子表。
(length <list>)
该函数返回一个表<list>的顶层元素的个数。