概要
- Function: delq OBJECT LIST
- この関数は、LISTからOBJECTに`eq'であるすべての要素を破壊的に削除する。`delq'の文字`q'は、`memq'と同様に、リストの要素に対するOBJECTの比較に`eq'を使うことを意味する。
例
`delq'がリストの先頭から要素を削除する場合には、単にリストを辿って削除し
た要素のつぎから始まる部分リストを返します。
(delq 'a '(a b c)) == (cdr '(a b c))
リストの中ほどの要素を削除する場合には、削除にはCDRの変更を伴います
(@see Setcdr)
(setq sample-list '(a b c (4)))
=> (a b c (4))
(delq 'a sample-list)
=> (b c (4))
sample-list
=> (a b c (4))
(delq 'c sample-list)
=> (a b (4))
sample-list
=> (a b (4))
`(delq 'c sample-list)'は、3番目の要素を切り取って`sample-list'を変更し
ますが、`(delq 'a sample-list)'では、なにも切り取らずに単に短いリストを
返すことに注意してください。引数LISTを保持していた変数が、実行後には少な
い要素を持つと仮定したり、もとのリストを保持し続けていると仮定したりしな
いでください!` ' そのかわりに、`delq'の結果を保存して、それを使ってくだ
さい。多くの場合、つぎのように、もとのリストを保持していた変数に結果を保
存し直します。
(setq flowers (delq 'rose flowers))
つぎの例では、`delq'が一致を取ろうとしている`(4)'と`sample-list'の`(4)'
とは`eq'ではありません。(@see
Emacs-Lisp/delete)
(delq '(4) sample-list)
=> (a c (4))
呼出元
履歴
コメント
最終更新:2009年01月06日 08:21