Subst
- 構文
- (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 "太郎"))