verketten ist ein Alias für 'cl-verketten' in 'cl.el'.
(TYPE SEQUENCE verketten ...)
Verketten Sie das Argument SEQUENCEs in eine Sequenz vom Typ TYPE.
Also für dein Beispiel
(concatenate 'list '("a" "b" "c") '("d" "e" "f"))
Da es in definiert ist, müssen cl
Sie möglicherweise (require 'cl)
zuerst, ansonsten können Sie verwenden, cl-concatenate
was standardmäßig geladen zu sein scheint.
Wie von @phils hervorgehoben, cl-concatenate
ruft @phils nur auf, append
wenn TYPE ist 'list
. Hier ist die Quelle von cl-extra.el
:
(defun cl-concatenate (type &rest sequences)
"Concatenate, into a sequence of type TYPE, the argument SEQUENCEs.
\n(fn TYPE SEQUENCE...)"
(pcase type
(`vector (apply #'vconcat sequences))
(`string (apply #'concat sequences))
(`list (apply #'append (append sequences '(nil))))
(_ (error "Not a sequence type name: %S" type))))
Wenn Sie also nur Listen verwenden, ist die direkte Verwendung einfacher append
, wie von @John Kitchin ausgeführt.
Schließlich erwähnte @lawlist nconc
:
nconc ist eine integrierte Funktion in 'C-Quellcode'.
(Nconc & Rest Listen)
Verketten Sie beliebig viele Listen, indem Sie sie ändern. Nur das letzte Argument wird nicht geändert und muss keine Liste sein.
Was das bedeutet:
(nconc '("a" "b" "c") '("d" "e" "f"))
=> ("a" "b" "c" "d" "e" "f")
(setq l1 '("a" "b" "c")
l2 '("d" "e" "f"))
(nconc l1 l2)
=> ("a" "b" "c" "d" "e" "f")
l1
=> ("a" "b" "c" "d" "e" "f")
l2
=> ("d" "e" "f")