「Subst」の版間の差分
(ページの作成: ; 構文 : (subst ''newitem'' ''olditem'' ''lst'') ; 機能 : リストで古い項目を検索し、古い項目があるたびに新しい項目で置き換えたリストの…) |
編集の要約なし |
||
(同じ利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
{{AutoLISP}} | |||
; 構文 | ; 構文 | ||
: (subst ''newitem'' ''olditem'' ''lst'') | : (subst ''newitem'' ''olditem'' ''lst'') | ||
5行目: | 6行目: | ||
; 機能 | ; 機能 | ||
: リストで古い項目を検索し、古い項目があるたびに新しい項目で置き換えたリストのコピーを返す。 | : リストで古い項目を検索し、古い項目があるたびに新しい項目で置き換えたリストのコピーを返す。 | ||
; 引数 | ; 引数 | ||
18行目: | 20行目: | ||
; サンプル | ; サンプル | ||
: (subst '"a" '"b" '("a" "b" "c")) | <pre class="brush: autolisp;"> | ||
(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 'b sample) | |||
(A B (C D) B) | |||
(subst 'qq '(c d) sample) | |||
(A B QQ B) | |||
(subst '(qq rr) 'QQ sample) | |||
(A B (QQ RR) B) | |||
(subst 'b '(qq rr) sample) | |||
(A B B B) | |||
</pre> | |||
: subst 関数を assoc 関数と組み合わせて使用すると、連想リスト内の 1 つのキーに関連する値を、簡単に置き換えることができる。次に ((FIRST "一郎") (MID "花子") (LAST "太郎")) のリストから((FIRST "イチロー") (MID "花子") (LAST "太郎")) に置き換える例を示す。 | : subst 関数を assoc 関数と組み合わせて使用すると、連想リスト内の 1 つのキーに関連する値を、簡単に置き換えることができる。次に ((FIRST "一郎") (MID "花子") (LAST "太郎")) のリストから((FIRST "イチロー") (MID "花子") (LAST "太郎")) に置き換える例を示す。 | ||
: | : | ||
: 変数 who に連想リストを代入。 | <pre class="brush: autolisp;"> | ||
; 変数 who に連想リストを代入。 | |||
(setq who '((FIRST "一郎") (MID "花子") (LAST "太郎"))) | |||
> ((FIRST "一郎") (MID "花子") (LAST "太郎")) | |||
; 次に、変数 old に(FIRST "一郎")を、変数 new に(FIRST "イチロー")を代入。 | |||
(setq old (assoc 'first who) | |||
new '(first "イチロー")) | |||
; 最後に、連想リストの最初の項目の値を置き換え。 | |||
(subst new old who) | |||
> ((FIRST "イチロー") (MID "花子") (LAST "太郎")) | |||
; コピーなので元のリストは変化なし | |||
!who | |||
> ((FIRST "イチロー") (MID "花子") (LAST "太郎")) | |||
(setq who (subst new old who) | |||
> ((FIRST "イチロー") (MID "花子") (LAST "太郎")) | |||
!who | |||
((FIRST "イチロー") (MID "花子") (LAST "太郎")) | |||
</pre> | |||
----- | |||
関連事項 | |||
* [[assoc]] | |||
[[Category:AutoLISP]] | [[Category:AutoLISP]] |
2020年9月1日 (火) 08:36時点における最新版
- 構文
- (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 'b sample) (A B (C D) B) (subst 'qq '(c d) sample) (A B QQ B) (subst '(qq rr) 'QQ sample) (A B (QQ RR) B) (subst 'b '(qq rr) sample) (A B B 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 "イチロー")) ; 最後に、連想リストの最初の項目の値を置き換え。 (subst new old who) > ((FIRST "イチロー") (MID "花子") (LAST "太郎")) ; コピーなので元のリストは変化なし !who > ((FIRST "イチロー") (MID "花子") (LAST "太郎")) (setq who (subst new old who) > ((FIRST "イチロー") (MID "花子") (LAST "太郎")) !who ((FIRST "イチロー") (MID "花子") (LAST "太郎"))
関連事項