Làm cách nào để chuyển đổi danh sách thành chuỗi để tôi có thể gọi insert
hoặc message
với nó? Tôi cần hiển thị c-offsets-alist
nhưng tôi nhận được Wrong type argument: char-or-string-p
để chèn hoặc Wrong type argument: stringp
cho thư.Cách chuyển danh sách thành chuỗi trong Emacs Lisp
21
A
Trả lời
27
Tôi không chắc chắn về những gì bạn đang cố gắng đạt được, nhưng format
chuyển đổi "nội dung" thành chuỗi. Ví dụ:
(format "%s" your-list)
sẽ trả về đại diện danh sách của bạn. message
sử dụng định dạng nội bộ, vì vậy
(message "%s" your-list)
sẽ in nó
7
Hoặc
(prin1-to-string your-string)
Cuối cùng cái gì đó đặc biệt
(princ your-string)
1
M-x pp-eval-expression RET c-offsets-alist RET
9
(format)
sẽ nhúng cha mẹ heses trong chuỗi, ví dụ:
ELISP> (format "%s" '("foo" "bar"))
"(foo bar)"
Vì vậy, nếu bạn cần một chất tương tự để Ruby/JavaScript như join()
, có (mapconcat)
:
ELISP> (mapconcat 'identity '("foo" "bar") " ")
"foo bar"
+0
'mapconcat 'identity', thành ngữ rất hay, cảm ơn bạn. – gsl
Có lẽ tốt hơn '% S' thay vì'% s' , để in danh sách theo cú pháp Lisp. – lunaryorn