concatenate to alias dla „cl-concatenate” w „cl.el”.
(łącz sekwencję TYPU ...)
Połącz w ciąg typu TYPE argument SEKWENCJE.
Na przykład
(concatenate 'list '("a" "b" "c") '("d" "e" "f"))
Ponieważ jest on zdefiniowany cl
, być może będziesz musiał (require 'cl)
najpierw, w przeciwnym razie możesz użyć tego, cl-concatenate
co wydaje się być domyślnie załadowane.
Ponadto, jak wskazuje @phils, cl-concatenate
po prostu wywołuje, append
gdy TYPE 'list
, oto źródło z 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))))
Jeśli więc używasz tylko list, łatwiej jest z nich korzystać bezpośrednio append
, jak wskazał @John Kitchin.
Wreszcie @lawlist wspomniał nconc
:
nconc to wbudowana funkcja w kodzie źródłowym „C”.
(LISTY nconc i rest)
Łącz dowolną liczbę list, zmieniając je. Tylko ostatni argument nie jest zmieniany i nie musi być listą.
Co to znaczy:
(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")