是什麼在後記後記一般問題
/Total psi.subtotal Total add def\n
以下幾條平均ps1.subtotal是我在其他地方居住,併爲貨幣數據類型的變量(例如:10.00美元)
按我的理解上面的代碼行添加psi.subtotal和Total,然後將結果存儲在Total中。 如果是這樣,我看到這個PS在上面的線出錯。我在一些地方也看到,即使對於整數加法,變量也首先轉換爲字符串,然後對變量執行加法或任何其他操作。 是這樣嗎?
感謝
是什麼在後記後記一般問題
/Total psi.subtotal Total add def\n
以下幾條平均ps1.subtotal是我在其他地方居住,併爲貨幣數據類型的變量(例如:10.00美元)
按我的理解上面的代碼行添加psi.subtotal和Total,然後將結果存儲在Total中。 如果是這樣,我看到這個PS在上面的線出錯。我在一些地方也看到,即使對於整數加法,變量也首先轉換爲字符串,然後對變量執行加法或任何其他操作。 是這樣嗎?
感謝
AFAIK沒有貨幣數據類型,所以我想這兩個psi.subtotal
和Total
是類型真正的。 add
操作添加整數或實數。 PostScript Language Reference寫得相當不錯,而且相對容易理解,其數據類型爲page 48,算術運算符爲page 66。 「
」上面的代碼行添加了psi.subtotal和Total,然後將結果存儲在Total中「是對代碼應該做什麼的很好的總結。
PostScript沒有內置貨幣類型(請參閱PostScript語言參考第3版,第3.3節)。創建類似貨幣類型的東西並不難。一種方法是通過定義一個自定義添加操作符。
變量通常通過將一個對象(如數字)推到操作數棧上來工作。內置的add運算符只能用於數字(同上,第527頁)。例如,如果您嘗試使用字符串,您將看到'typecheck'錯誤。
但是,您提供的代碼不能保證psi.subtotal和Total是貨幣值(無論貨幣是什麼意思)。沒有辦法知道代碼是否運行標準的「添加」。
這將有助於瞭解錯誤的細節,以及如何在代碼執行之前定義Total和psi.subtotal。並且是否添加已被重新定義。
下面的代碼顯示了你的代碼如何表示兩種不同的東西。
(Using numbers for currencies...) =
/psi.subtotal 42.5 def
/Total 37 def
/Total psi.subtotal Total add def %%%%%%%%%%%%%%%%%% Your code.
(Total) print Total ==
(Using strings for currencies...) =
/psi.subtotal (42.50) def
/Total (37.00) def
/standard_add { add } bind def
/currency_add { % stack: str str -- both string reps of numbers
cvr % stack: str num
exch % stack: num str
cvr % stack: num num
standard_add % stack: num
20 string % stack: num str
cvs % stack: str
}
def
/add { currency_add } def % Override existing add.
/Total psi.subtotal Total add def %%%%%%%%%%%%%%%%%% Your code.
(Total) print Total =
flush
這基本上是'Total'(name)='psi.subtotal'(一個值)+'Total'(值,再次)。不過,我並不熟悉在PostScript中使用實際數據類型或貨幣的功能。 – Joey 2010-11-14 14:52:17
您發佈的代碼沒有任何問題。它對我的翻譯工作正常。請將您的程序降至實際失敗的問題案例,並描述您所得到的實際錯誤。 – 2010-11-14 15:00:13