concatenate adalah alias untuk 'cl-concatenate' di 'cl.el'.
(SEQUENCE TYPE gabungan ...)
Concatenate, menjadi urutan tipe TYPE, argumen SEQUENCEs.
Jadi untuk contoh Anda
(concatenate 'list '("a" "b" "c") '("d" "e" "f"))
Karena itu didefinisikan di cl
Anda mungkin harus (require 'cl)
terlebih dahulu, jika tidak Anda dapat menggunakan cl-concatenate
yang tampaknya dimuat secara default.
Juga, seperti yang ditunjukkan oleh @phils cl-concatenate
hanya menelepon append
saat TYPE sedang'list
, inilah sumber dari 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))))
Jadi jika Anda hanya menggunakan daftar, lebih mudah digunakan secara langsung append
, seperti yang ditunjukkan oleh @John Kitchin.
Akhirnya, @lawlist menyebutkan nconc
:
nconc adalah fungsi bawaan di 'kode sumber C'.
(nconc & sisanya LISTS)
Gabungkan sejumlah daftar dengan mengubahnya. Hanya argumen terakhir yang tidak diubah, dan tidak perlu daftar.
Apa artinya ini:
(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")