2011-09-25 30 views

Odpowiedz

10

Wypróbuj 3.14159 20 string cvs show.

string potrzebuje rozmiaru i pozostawia utworzony ciąg na stosie. cvs potrzebuje wartości i ciągu, aby zapisać skonwertowaną wartość.

Jeśli robisz dużo konwersji ciągów, może być bardziej skuteczne, aby utworzyć jeden ciąg i używać go w każdej konwersji:

/s 20 string def 
3.14159 s cvs show 
11

Wspólne idiom jest użycie ciągiem znaków jako szablon.

1.42857 (  ) cvs show 

Można nawet sformatować dane wyjściowe, prezentując cvs z różnymi podciągami większego łańcucha.

%....... 
(2/7 =  ) dup 6 7 getinterval 
2.85714 exch cvs pop show 

Ale zabrania tego Ghostscript Style Guide. I jest to jedyny opublikowany poradnik w stylu PostScript, jaki mamy. (A discussion about this w comp.lang.postscript.) Tak więc powszechną rekomendacją jest przydzielenie świeżego ciągu, gdy jest to potrzebne, i niech zbieracz śmieci zacznie zarabiać.

4.28571 7 string cvs show 

W ostateczności naprawdę leniwy haker będzie porwać =string, wbudowany bufor 128 bajtów używanych przez = i == do numerów wyjściowych (używając oczywiście nasz przyjaciel cvs).

5.71428 =string cvs show 

A jeśli lubisz tego jednego, można połączyć go z = jest inny trick: natychmiast oceniane nazwy.

{ 7.14285 //=string cvs show } % embed =string in this procedure 

Umożliwia to dodatkowe, mikrosekundowe wyłączenie i znacznie utrudnia interaktywną kontrolę kodu. Wywołanie tej procedury pod numerem == nie spowoduje ujawnienia faktu, że używasz =string; wygląda jak każdy inny ciąg.


Jeszcze jedna sztuczka do torby, od a post by Helge Blischke in comp.lang.postscript. Jest to prosty sposób uzyskania zerowej liczby całkowitej.

/bindec   % <integer> bindec <string_of_length_6> 
{ 
     1000000 add 7 string cvs 1 6 getinterval 
}bind def 
+1

"1000000 dodać 7 ciągów cvs 1 6 getinterval" - Schludny trik :-) –

Powiązane problemy