2013-09-24 99 views
21

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

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ó

+8

Có lẽ tốt hơn '% S' thay vì'% s' , để in danh sách theo cú pháp Lisp. – lunaryorn

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