LISP 语言如何修改列表中的某个元素?

LISP 语言如何修改列表中的某个元素?,第1张

@p1是新点,替换直线起点,直线起点序号为10

&k1是直线

(setq #k1 (entget &k1))取得直线属性列表

(setq %k1 (assoc 10 #k1))取得起点元素

(setq %k2 (cons 10 @p1))取得直线起点新元素

(setq #k1 (subst %k2 %k1 #k1))替换元素

以上是坐标点替换方法,其它元素替换基本相同

Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如abc;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如: abc () (abc xyz) (a b (c) d) 最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。 正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。如果一个表达式是一个表,那么我们把表中的第一个元素叫做 *** 作符,其余的元素叫做自变量。 Lisp的7个公理(基本 *** 作符): (quote x)返回x,我们简记为'x (atom x)当x是一个原子或者空表时返回原子t,否则返回空表()。在Lisp中我们习惯用原子t表示真,而用空表()表示假。 >(atom 'a) t >(atom '(a b c)) () >(atom '()) t 现在我们有了第一个需要求出自变量值的 *** 作符,让我们来看看quote *** 作符的作用——通过引用(quote)一个表,我们避免它被求值。一个未被引用的表达式作为自变量,atom将其视为代码,例如: >(atom (atom 'a)) t 反之一个被引用的表仅仅被视为表 >(atom '(atom 'a)) () 引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了Lisp最为与众不同的特点——代码和数据使用相同的结构来表示,而我们用quote来区分它们。 (eq x y)当x和y的值相同或者同为空表时返回t,否则返回空表() >(eq 'a 'a) t >(eq 'a 'b) () >(eq '() '()) t (car x)要求x是一个表,它返回x中的第一个元素,例如: >(car '(a b)) a (cdr x)同样要求x是一个表,它返回x中除第一个元素之外的所有元素组成的表,例如: >(cdr '(a b c)) (b c) (cons x y)要求y是一个表,它返回一个表,这个表的第一个元素是x,其后是y中的所有元素,例如: >(cons 'a '(b c)) (a b c) >(cons 'a (cons 'b (cons 'c ()))) (a b c)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11838423.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存