concatenate là một bí danh cho 'cl-concatenate' trong 'cl.el'.
(nối với LOẠI TÌM KIẾM ...)
Ghép nối, thành một chuỗi kiểu TYPE, đối số SEQUENCE.
Vì vậy, ví dụ của bạn
(concatenate 'list '("a" "b" "c") '("d" "e" "f"))
Vì nó được định nghĩa trong cl
bạn có thể phải (require 'cl)
đầu tiên, nếu không bạn có thể sử dụng cl-concatenate
mà dường như được nạp theo mặc định.
Ngoài ra, như được chỉ ra bởi @phils cl-concatenate
chỉ gọi append
khi TYPE 'list
, đây là nguồn từ 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))))
Vì vậy, nếu bạn chỉ sử dụng danh sách, việc sử dụng trực tiếp sẽ đơn giản hơn append
, như được chỉ ra bởi @John Kitchin.
Cuối cùng, @lawlist đã đề cập nconc
:
nconc là một hàm tích hợp trong 'mã nguồn C'.
(DANH SÁCH & DANH SÁCH nghỉ ngơi)
Ghép nối bất kỳ số lượng danh sách bằng cách thay đổi chúng. Chỉ đối số cuối cùng không bị thay đổi và không cần phải là một danh sách.
Điều này có nghĩa là gì:
(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")