摘要:
從史蒂芬Haflich
語言的解釋定義沒有可移植的方法來擴展格式的設定 指令(其他然後~/.../
),但在這裏,這不是真正的問題。 真正的問題是,在打印過程中沒有明確定義在任意位置調用finish-output
或類似的功能。
如果漂亮的印刷過程中,由 pprint-dispatch
或print-object
方法收到的流可以是封裝流 - 一個暫時延遲輸出,直到它可以使約 空格和換行決定。 (也有潛在的問題,如果 finish-output
被稱爲~<
理由裏面,但該指令 是毛球!)什麼將一個預期finish-output
做,如果叫 一個漂亮的打印操作裏面?我不認爲它有明確的定義。
的問題是並非特定格式,當然,但是從格式 finish-output
一個指令只想補充另一個尖銳的邊緣到 語言。 finish-output
等僅在完全 以外的實際或暗示呼叫cl:write
時纔可以安全呼叫。把它作爲一個功能 在代碼中的適當位置(你知道執行力不 嵌套寫裏面),這樣的意圖是明確的,你不要弄亂 打印機內部。
事實上,需要從羅布沃諾克有人建議format
沒有變化。只是在某處COMMON-LISP-USER package添加此功能:
(defun fo (stream arg colon-p atsign-p &rest params)
(declare (ignore arg params))
(cond
(colon-p (force-output stream))
(atsign-p (clear-output stream))
(t (finish-output stream))))
然後:
(progn
(format t "enter var: ~/fo/" nil)
(read))
enter var: 456
456
的問題與此(便攜式!)的方式被
- 冗長的(
~/fo/
代替~=
)
- 需要消耗格式參數(
nil
在上面的例子)
來源
2017-08-23 17:36:40
sds
清除輸入也許可以是具有雙向流有用嗎? – coredump