concatenate, 'cl.el' içindeki 'cl-concatenate' için bir takma addır.
(TİP SIRASI'nı bitiştir ...)
TYPE türünde bir sıraya SEQUENCE argümanı ekleyin.
Yani örneğin
(concatenate 'list '("a" "b" "c") '("d" "e" "f"))
İçinde tanımlandığından, önce clyapmanız gerekebilir (require 'cl), aksi takdirde cl-concatenatevarsayılan olarak yüklenmiş gibi kullanabilirsiniz .
Ayrıca, @phils'in işaret ettiği gibi , TYPE olduğu zaman cl-concatenateçağrı appendyapar 'list, kaynak 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))))
Bu nedenle, yalnızca listeleri kullanıyorsanız append, @John Kitchin tarafından işaret edildiği gibi doğrudan kullanmak daha kolaydır .
Son olarak, @lawlist şunları söyledi nconc:
nconc, 'C kaynak kodu'nda yerleşik bir fonksiyondur.
(dinlen ve dinlen LİSTELERİ)
İstediğiniz sayıda listeyi değiştirerek birleştirin. Yalnızca son argüman değiştirilmez ve bir liste olması gerekmez.
Bunun anlamı:
(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")