“~&”知道Ostream是不是线头?

问题描述 投票:0回答:1
CL-USER> (progn
           (format t "abc~%")
           (format t "~&abc"))
abc
abc
NIL
CL-USER> 

我的猜测是:ostream 描述符总是存储发送给它的最新字符。
说,在 ostream 收到一个

#\a
之后,
FORMAT
可以确定 ostream 是 not 开头因为发送给它的最新字符是
#\a
.

但我不确定情况是否如此。

common-lisp ostream format-string
1个回答
3
投票

~&
只是调用
fresh-line
,所以问题实际上是
fresh-line
是怎么知道的,答案是

  • 根本不需要知道它:参见TERPRI,FRESH-LINE
  • 以及它如何知道它完全取决于实现。

如果您查看可用源代码的各种实现,您可能会发现它们执行此操作的各种方式。例如,SBCL 有一个

fd-stream
对象(在
src/code/fd-stream.lisp
中),它跟踪
output-column
。但是实现如何做到这一点,以及他们是否这样做,完全取决于他们。

© www.soinside.com 2019 - 2024. All rights reserved.