首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确区分格式以丢弃输入

如何正确区分格式以丢弃输入
EN

Stack Overflow用户
提问于 2012-08-06 12:23:43
回答 2查看 163关注 0票数 0

我想要一种动态的方法,告诉FORMAT根据某个全局变量集在实际调用之前丢弃输出。我认为应该将t更改为nil,但我并不满意,因为在任何可能将返回的字符串与实际返回值混淆的地方,我都无法使用这些FORMAT调用。

例如:

告诉格式输出终端-IO(工作良好)

代码语言:javascript
复制
(let ((*the-var* t))
  (FORMAT *the-var* "some text")
  #|do some other stuff|#)
->"some-text"
->'return-value'

告知格式以丢弃输出(工作良好)

代码语言:javascript
复制
(let ((*the-var* nil))
  (FORMAT *the-var* "some text")
  #|do some other stuff|#)
->'return-value'

告诉格式丢弃输出(因为返回的格式字符串可能会与可能的返回值混淆),因此不能正常工作。

代码语言:javascript
复制
(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或在其周围添加一个条件子句?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-06 12:36:04

没有组件流的广播流是丢弃输出的通用Lisp方式。您可以使用广播流创建一个。

票数 4
EN

Stack Overflow用户

发布于 2012-08-06 12:36:14

FORMAT不会丢弃输出。

如果将NIL作为输出方向传递给FORMAT,则它将以字符串的形式返回输出,并将而不是打印到流中。

不打印任何东西的最好方法是不调用FORMAT

使用FORMAT生成输出而不使用该输出来显示是没有什么意义的。检查一下你是否想要输出。

代码语言:javascript
复制
  (let ((output-p nil)) ;no return value intended//nil expected
    #|do some stuff|#
    (when output-p
      (FORMAT stream "some text")))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11828235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档