我想要一种动态的方法,告诉FORMAT根据某个全局变量集在实际调用之前丢弃输出。我认为应该将t更改为nil,但我并不满意,因为在任何可能将返回的字符串与实际返回值混淆的地方,我都无法使用这些FORMAT调用。
例如:
告诉格式输出终端-IO(工作良好)
(let ((*the-var* t))
(FORMAT *the-var* "some text")
#|do some other stuff|#)
->"some-text"
->'return-value'告知格式以丢弃输出(工作良好)
(let ((*the-var* nil))
(FORMAT *the-var* "some text")
#|do some other stuff|#)
->'return-value'告诉格式丢弃输出(因为返回的格式字符串可能会与可能的返回值混淆),因此不能正常工作。
(let ((*the-var* nil)) ;no return value intended//nil expected
#|do some stuff|#
(FORMAT *the-var* "some text"))
->"some text"因此,我想知道是否有任何方法可以告诉格式放弃输出,而不引起太大的麻烦,比如将*the-var*变量设置为"/dev/null"-stream或在其周围添加一个条件子句?
发布于 2012-08-06 12:36:04
没有组件流的广播流是丢弃输出的通用Lisp方式。您可以使用广播流创建一个。
发布于 2012-08-06 12:36:14
FORMAT不会丢弃输出。
如果将NIL作为输出方向传递给FORMAT,则它将以字符串的形式返回输出,并将而不是打印到流中。
不打印任何东西的最好方法是不调用FORMAT。
使用FORMAT生成输出而不使用该输出来显示是没有什么意义的。检查一下你是否想要输出。
(let ((output-p nil)) ;no return value intended//nil expected
#|do some stuff|#
(when output-p
(FORMAT stream "some text")))https://stackoverflow.com/questions/11828235
复制相似问题