Trong Emacs lisp có add-to-list
để thêm một phần tử vào danh sách (nếu nó chưa tồn tại).Cách thêm nhiều phần tử vào danh sách trong Emacs lisp
Thay vì một, tôi muốn thêm nhiều phần tử. Ngoài ra, tôi không muốn lọc các phần tử trùng lặp nhưng vẫn thêm chúng vào danh sách.
Hiện nay, tôi đã thực hiện các chức năng sau:
(defun append-to-list (list-var elements)
"Append ELEMENTS to the end of LIST-VAR.
The return value is the new value of LIST-VAR."
(set list-var (append (symbol-value list-var) elements)))
Chức năng làm những gì tôi muốn, nhưng tôi đã tự hỏi nếu một cái gì đó như thế này (hoặc tốt hơn) đã tồn tại trong Emacs lisp. Tôi không muốn phát minh lại bánh xe.
Cập nhật 1: Stefan chỉ ra bên dưới rằng mã này không hoạt động với phạm vi từ vựng. Có cách nào để làm cho nó hoạt động không?
Cập nhật 2: Trước đây tôi nghĩ rằng tính năng lọc trùng lặp sẽ ổn nhưng không. Tôi cần bản sao.
Mã của bạn vẫn ổn. Không có chức năng hệ thống tương tự. – sds
Tôi sẽ không mô tả nó là "tốt", nhưng có, nó sẽ làm việc. Sử dụng 'symbol-value' và' set' có nghĩa là nó không thể được sử dụng với một biến có phạm vi từ vựng. Trừ khi bạn ** thực sự ** cần nó, tốt hơn nên thêm 'elements' ngay từ đầu, vì' elements' sẽ hầu như luôn ngắn hơn (và đôi khi * nhiều * ngắn hơn) so với 'list-var'. – Stefan
Có cách nào để làm cho mã hoạt động với phạm vi từ vựng không? –