【问题标题】:What is WITH-STANDARD-IO-SYNTAX macro for?WITH-STANDARD-IO-SYNTAX 宏有什么用?
【发布时间】:2010-10-02 01:30:03
【问题描述】:

Practical Common Lisp 第 25 页解释了 WITH-STANDARD-IO-SYNTAX 如下。 “它确保将影响 PRINT 行为的某些变量设置为其标准值”。

用法如下。

(with-open-file (...)
    (with-standard-io-syntax
        (print ...

应该在这个宏中使用(打印)吗?如果没有,会发生什么?

【问题讨论】:

    标签: lisp common-lisp


    【解决方案1】:

    各种动态变量会影响print 产生的输出。 with-standard-io-syntax 确保将这些变量设置为默认值。

    例如:

    (let ((list '(1 2 3 4 5 6 7 8 9 10))
          (*print-length* 5))
      (print list)
      (with-standard-io-syntax
        (print list)))
    

    打印:

    (1 2 3 4 5 ...) 
    (1 2 3 4 5 6 7 8 9 10) 
    

    如果您打印内容是为了以后能够read(例如prin1),这一点尤其重要。

    【讨论】:

      猜你喜欢
      • 2020-07-24
      • 2018-09-15
      • 2010-09-12
      • 2022-12-02
      • 2022-12-24
      • 2017-11-21
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      相关资源
      最近更新 更多