un idioma comune è quello di utilizzare una stringa letterale come modello.
1.42857 ( ) cvs show
Si può anche fare un output formattato con la presentazione di CVS con varie sottostringhe di una stringa più grande.
%.......
(2/7 = ) dup 6 7 getinterval
2.85714 exch cvs pop show
Ma il Ghostscript Style Guide vieta questo. Ed è praticamente l'unica guida in stile Postscript pubblicata che abbiamo. (A discussion about this in comp.lang.postscript). Quindi una raccomandazione comune è quella di allocare una nuova stringa quando ne hai bisogno e lasciare che il garbage collector guadagni il suo mantenimento.
4.28571 7 string cvs show
Come ultima risorsa, l'hacker veramente pigri sarà dirottare =string
, il built-in buffer di 128 byte usati per =
e ==
a numeri di uscita (utilizzando, ovviamente, il nostro amico cvs
).
5.71428 =string cvs show
E se vi piace che uno, si può combinare con s' =
altro trucco: i nomi immediatamente valutati.
{ 7.14285 //=string cvs show } % embed =string in this procedure
Questo sistema elimina il microsecondo in più e rende molto più difficile l'ispezione interattiva del codice. Chiamando ==
su questa procedura non rivelerà il fatto che si sta utilizzando =string
; sembra proprio come qualsiasi altra stringa.
Un altro trucco per la borsa, da a post by Helge Blischke in comp.lang.postscript. Questo è un modo semplice per ottenere un numero intero senza riempimento.
/bindec % <integer> bindec <string_of_length_6>
{
1000000 add 7 string cvs 1 6 getinterval
}bind def
fonte
2011-09-26 07:46:55
"1000000 aggiungi 7 string cvs 1 6 getinterval" - Trucchetto accurato :-) –