摘要:
从史蒂芬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