我偶爾會涉及postscript,它是我喜歡的一種古怪的語言,但我遠離專家。Postscript - 案例陳述的替代方法
爲了生產圖所示:
我已經寫了一些代碼,看起來像這樣:
% fontsize on stack
label (Up) eq
{ /Symbol exch selectfont (\255) show }
{ label (Down) eq
{ /Symbol exch selectfont (\257) show }
{ label (Left) eq
{ /Symbol exch selectfont (\254) show }
{ label (Right) eq
{ /Symbol exch selectfont (\256) show }
{ label (bs) eq
{ /Symbol exch selectfont (\254) show }
{ /Helvetica exch selectfont
label length 3 lt
{ label show }
{
label (/) % (page/up) (/)
search % (up) (/) (page) true
{ % (up) (/) (page)
/Helvetica keyHeight 4.6 div selectfont
3 1 roll % (page) (up) (/)
pop % (page) (up)
currentpoint % (page) (up) 438 745
3 2 roll % (page) 438 745 (up)
show % (page) 438 745
moveto % (page)
0 keyHeight 0.25 mul % (page) 0 11
rmoveto % (page)
show } %
{ show } ifelse
} ifelse
} ifelse
} ifelse
} ifelse
} ifelse
} ifelse
...
(End)key (Page/Down)key 0.5 gap (7)(Home)key2 (8)(Up)key2 ...
我不喜歡嵌套的if語句和重複,但它第一次快速刺入解決方案。我的第一個想法是我會用另一種語言使用case語句。對於Postscript,我想我應該爲這些標籤名稱對和相應的八進制字符代碼選擇合適的數據結構。也許是一個嵌套數組。
[ [(Up) (\255)] [(Down) (\257)] ... ]
但我不確定我怎麼會遍歷這個,仍然優雅跟蹤我是否需要在沒有名字匹配執行默認過程。
有沒有一個很好的習語我可以遵循?
可悲的是,我從我的辦公桌前的那一刻,如果你檢查comp.lang.postscript檔案,你應該找到一些帖子出現在這個問題上(從我或luser楚格設計查找代碼,如果我沒記錯的話) 。否則,當我回家時,我會在這裏張貼一些東西。 – KenS