在表中搜索某旧项,并将表中出现的每一个旧项用新项代替,然后返回修改后所得的表
(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))
明经通道 版权所有 未经许可 不得传播 | 评论 |