明经通道 AutoLISP 函数  
subst
 

在表中搜索某旧项,并将表中出现的每一个旧项用新项代替,然后返回修改后所得的表

(subst newitem olditem lst)

参数

newitem

原子或表。

olditem

原子或表。

lst

表。

返回值

表。其中用 newitem 替换了所有出现的 olditem。如果 lst 中未找到 olditem,subst 返回原来的 lst。

示例

命令: (setq sample '(a b (c d) b))

(A B (C D) B)

命令: (subst 'qq 'b sample)

(A QQ (C D) QQ)

命令: (subst 'qq 'z sample)

(A B (C D) B)

命令: (subst 'qq '(c d) sample)

(A B QQ B)

命令: (subst '(qq rr) '(c d) sample)

(A B (QQ RR) B)

命令: (subst '(qq rr) 'z sample)

(A B (C D) B)

与 assoc 共同使用时,subst 函数可以方便地替换关联表中与某关键字相关的值。如下所示。

将变量 who 设置为关联表:

命令: (setq who '((first john) (mid q) (last public)))

((FIRST JOHN) (MID Q) (LAST PUBLIC))

然后将 old 设置为 (FIRST JOHN),new 设置为 (FIRST J):

命令: (setq old (assoc 'first who) new '(first j))

(FIRST J)

最后,替换关联表中第一项的值:

命令: (subst new old who)

((FIRST J) (MID Q) (LAST PUBLIC))

明经通道 版权所有 未经许可 不得传播

 评论