2013-09-24 9 views
21

Jak przekonwertować listę na ciąg znaków, aby można było z nią wywołać insert lub message? Muszę wyświetlić c-offsets-alist, ale mam Wrong type argument: char-or-string-p dla wstawienia lub Wrong type argument: stringp dla wiadomości.Jak przekonwertować listę na ciąg w Emacs Lisp

Odpowiedz

27

Nie jestem pewien, co próbujesz osiągnąć, ale format konwertuje "stuff" na ciągi. Na przykład:

(format "%s" your-list) 

zwróci reprezentację Twojej listy. message używa formatu wewnętrznie, tak

(message "%s" your-list) 

zostanie wydrukowana

+8

Prawdopodobnie lepiej '% s' zamiast'% s' , aby wydrukować listę w składni Lisp. – lunaryorn

7

Or

(prin1-to-string your-string) 

Wreszcie coś specjalnego

(princ your-string) 
1
M-x pp-eval-expression RET c-offsets-alist RET 
9

(format) osadzi rodzica heses w ciągu, np

ELISP> (format "%s" '("foo" "bar")) 
"(foo bar)" 

Zatem jeśli potrzebujesz analogowego do Ruby/JavaScript podobny join() istnieje (mapconcat):

ELISP> (mapconcat 'identity '("foo" "bar") " ") 
"foo bar" 
+0

'mapconcat 'identity', bardzo ładny idiom, dziękuję. – gsl

Powiązane problemy