如何在Common Lisp上的FORMAT控制字符串中指定参数作为变量?



我能做什么:

CL-USER> (format nil "~10:<foobar~>")
"    foobar"

但是我希望将10传递为参数,例如:

CL-USER> (format nil "~d:<foobar~>" 10) ;; but throws error
"    foobar"

有什么办法可以做到这一点吗?因为我不想那样做:

CL-USER> (format nil (format nil "~~~d:<foobar~~>" 10))
"    foobar"

在 Python 或 C 中可以使用*将变量参数传递给控制字符串,如下所示:

print("%*s" % (10, "foobar"))

我想要相同的Common Lisp格式。提前谢谢。

我找到了解决方案,只是使用~v而不是~d。下面对此进行了描述:

可以使用 V(或 v(代替指令的前缀参数。在这种情况下,format 将参数从 args 作为参数带到指令。参数应为整数或字符。如果 V 参数使用的参数为 nil,则效果就像省略了该参数一样。

参见:22.3 格式化输出 - Common Lisp HyperSpec

CL-USER > (format nil "~v:<foobar~>" 10)
"    foobar"

相关内容

  • 没有找到相关文章

最新更新