~% 在 format 中的作用

让我详细解释一下 Common Lisp 中 format​ 函数里的 ~%​ 指令。

~%​ 是 format​ 函数中的一个格式化指令(format directive),它的作用是插入一个换行符。

详细说明:

  1. 功能

    • ~%​ 在输出中插入一个换行符(newline character)。
    • 它相当于在字符串中插入 #\Newline​ 或 \n​。
  2. 使用场景

    • 当你需要在格式化输出中添加换行时使用。
    • 特别适用于创建多行输出或者在输出的不同部分之间添加空行。
  3. 示例

    (format t "Hello~%World")
    

    这将输出:

    Hello
    World
    
  4. terpri的关系

    • ~%​ 的效果类似于调用 terpri​ 函数,但它是内嵌在 format​ 字符串中的。
  5. 多个连续的 ~% ​:

    • 你可以使用多个 ~%​ 来创建多个换行:

      (format t "First line~%~%Third line")
      

      这会产生一个空行。

  6. 性能考虑

    • 在需要大量换行的情况下,使用 ~%​ 通常比在代码中多次调用 terpri​ 更高效,因为它是 format​ 指令的一部分。

高级用法

  1. 带参数的 ~% ​:

    • 你可以在 ~​ 和 %​ 之间加入一个数字,指定要插入的换行符数量:

      (format t "One~3%Four") ; 插入三个换行符
      

      输出:

      One
      
      
      Four
      
  2. 在循环中使用

    (format t "~{~A~^~%~}" '("Line 1" "Line 2" "Line 3"))
    

    这会打印列表中的每个元素,每个元素占一行。

  3. 条件换行

    • ~@%​ 只在需要时(即不在行的开始)才插入换行:

      (format t "~@%First")  ; 不会在开头插入换行
      (format t "~@%Second") ; 会在 "First" 后插入换行
      

为什么使用 ~%​ 而不是 \n​?

  1. 可移植性~%​ 在所有 Common Lisp 实现中都能正确工作,而 \n​ 在某些系统中可能不被识别为换行符。
  2. 一致性:使用 ~%​ 保持了与其他 format​ 指令的一致性,使代码更易读和维护。
  3. 灵活性~%​ 可以与其他 format​ 指令结合使用,提供更复杂的格式化选项。

通过理解并正确使用 ~%​,你可以更好地控制 Common Lisp 程序的输出格式,使其更加清晰和专业。


  • Lisp
    37 引用 • 13 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...