Subst

提供:GizmoLabs - だいたい CAD LISP なサイト
2009年10月21日 (水) 13:11時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成: ; 構文 : (subst ''newitem'' ''olditem'' ''lst'') ; 機能 : リストで古い項目を検索し、古い項目があるたびに新しい項目で置き換えたリストの…)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(subst newitem olditem lst)


機能
リストで古い項目を検索し、古い項目があるたびに新しい項目で置き換えたリストのコピーを返す。
引数
  • newitem : アトムまたはリスト。
  • olditem : アトムまたはリスト。
  • lst : リスト。


戻り値
すべての olditem を newitem に置き換えたリスト。
lst 引数に olditem が存在しない場合、subst 関数は lst を変更せずに返す。


サンプル
(subst '"a" '"b" '("a" "b" "c"))
("a" "a" "c")
---
(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)
---
subst 関数を assoc 関数と組み合わせて使用すると、連想リスト内の 1 つのキーに関連する値を、簡単に置き換えることができる。次に ((FIRST "一郎") (MID "花子") (LAST "太郎")) のリストから((FIRST "イチロー") (MID "花子") (LAST "太郎")) に置き換える例を示す。
変数 who に連想リストを代入。
(setq who '((FIRST "一郎") (MID "花子") (LAST "太郎")))
((FIRST "一郎") (MID "花子") (LAST "太郎"))
次に、変数 old に(FIRST "太郎")を、変数 new に(FIRST "イチロー")を代入。
(setq old (assoc 'first who) new '(first "イチロー"))
(FIRST "イチロー")
最後に、連想リストの最初の項目の値を置き換え。
(subst new old who)
((FIRST "イチロー") (MID "花子") (LAST "太郎"))