Se la stringa ha un indicatore di riempimento e forse è anche regolabile.
Regolabile = può cambiare la sua dimensione.
fill-pointer = la dimensione del contenuto, la lunghezza, può essere inferiore alla dimensione della stringa.
VECTOR-PUSH
= aggiungi un elemento alla fine e incrementa il puntatore di riempimento.
VECTOR-PUSH-EXTEND
= come VECTOR-PUSH
, ridimensiona ulteriormente la matrice, se è troppo piccola.
Possiamo fare una stringa regolabile da uno normale:
CL-USER 32 > (defun make-adjustable-string (s)
(make-array (length s)
:fill-pointer (length s)
:adjustable t
:initial-contents s
:element-type (array-element-type s)))
MAKE-ADJUSTABLE-STRING
CL-USER 33 > (let ((s (make-adjustable-string "Lisp")))
(vector-push-extend #\! s)
s)
"Lisp!"
fonte
2013-08-04 18:52:08
o l'alternativa oscura, assicurarsi che la stringa FORMAT possa essere compilata. –