Emacs-Lisp > delq

概要

  • 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'ではありません。(@seeEmacs-Lisp/delete)

    (delq '(4) sample-list)
         => (a c (4))


呼出元

コメント:

履歴

  • 作者:kobapan
  • 日付:2009/01/03
  • 対象:
更新日 更新者 更新内容

コメント

名前:
コメント:
最終更新:2009年01月06日 08:21