In Emacs lisp gibt es add-to-list
, um ein einzelnes Element zu einer Liste hinzuzufügen (wenn es nicht schon existiert).
Anstelle von einem möchte ich mehrere Elemente hinzufügen. Außerdem möchte ich doppelte Elemente nicht filtern, sondern sie trotzdem zur Liste hinzufügen.
Zur Zeit habe ich die folgende Funktion implementiert:
%Vor%Die Funktion macht, was ich will, aber ich frage mich, ob sowas (oder besser) schon in Emacs Lisp existiert. Ich möchte das Rad nicht neu erfinden.
Update 1 : Stefan weist darauf hin, dass dieser Code nicht mit lexikalischen Scoping funktioniert. Gibt es eine Möglichkeit, es zum Laufen zu bringen?
Update 2 : Früher dachte ich, dass doppelte Filterung in Ordnung wäre, aber das ist es nicht. Ich brauche die Duplikate.
Dies wäre fast gleichwertig, aber schneller, da es keine Kopie der ursprünglichen Liste vor dem Anhängen der neuen Elemente erstellt.
%Vor% 1 append
kopiert nicht das letzte Element, sondern verwendet es direkt als das Ende der neuen Liste, so dass das Teil identisch ist. Wenn es jedoch zusätzliche Verweise auf das ursprüngliche Listenobjekt (oder einen Teil davon) gibt, dann wird ein funktionaler Unterschied zwischen dem Kopieren dieser Liste (über append
) und nur dem Erweitern (mit% Code%). Welches dieser beiden Ergebnisse Sie tatsächlich wollen, liegt natürlich bei Ihnen.
Ich habe Folgendes in meiner init-Datei, die das Hinzufügen mehrerer Elemente ermöglicht. Ich weiß nicht, wie effizient es ist, die hinzuzufügenden Elemente zu durchlaufen, aber es verhindert doppelte Elemente.
%Vor%