String append: Difference between revisions

Emacs Lisp: Correct example, demonstrate buffer solution
(Emacs Lisp: Correct example, demonstrate buffer solution)
Line 636:
 
=={{header|Emacs Lisp}}==
 
===version 1===
While strings in Emacs Lisp are mutable, they're fixed size. Therefore the <code>concat</code> function creates a new string and the existing string must be referenced twice:
<lang Emacs Lisp>
 
(defun glue (str1 str2)
<lang Lisp>(defvar str "foo")
(setq str (concat str1str str2"bar") )
</lang>
str ;=> "foobar"</lang>
===version 2===
 
<lang Emacs Lisp>
Buffers can be thought of as expandable strings:
(defun glue (str1 str2)
 
(format "%s%s" str1 str2) )
<lang Lisp>(let ((buf (get-buffer-create "*foo*")))
</lang>
(with-current-buffer buf
<b>Eval:</b>
(insert "foo"))
<lang Emacs Lisp>
(with-current-buffer buf
(setq str "Hello, ")
(goto-char (point-max))
(setq str (glue str "World!") )
(insert str"bar")
(buffer-string)))
</lang>
;; => "foobar"</lisp>
<b>Output:</b>
<pre>
Hello, World!
</pre>
 
=={{header|Erlang}}==
Anonymous user