我能做什么:
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格式中使用相同的内容。提前谢谢。
答案 0 :(得分:1)
我找到了解决方案,只需使用~v
代替~d
。这在这里描述:
代替指令的前缀参数,可以使用V(或v)。在这种情况下,format将args中的参数作为指令的参数。参数应该是整数或字符。如果V参数使用的arg为nil,则效果就好像参数已被省略。
请参阅:22.3 Formatted Output - Common Lisp HyperSpec
CL-USER > (format nil "~v:<foobar~>" 10)
" foobar"