我正在尝试使用printf自动化某些输出,但我正在努力找到一种方法将<{1>}中的参数列表传递给它
expr_1, ..., expr_n
我想过使用像Javascript printf (dest, string, expr_1, ..., expr_n)
operator这样的东西,但我甚至不确定是否需要它。
对于instace,我说有一个要输出的字符串列表
spread
一串适当的格式描述符,比如说
a:["foo","bar","foobar"];
和输出流,比如s: "~a ~a ~a ~%";
。如何以这样的方式调用os
,使得结果与编写相同
printf
然后我可以将它推广到输出可变大小的列表。
有什么建议吗?
感谢。
修改
我刚刚了解了printf(os,s,a[1],a[2],a[3]);
,并且使用我在OP中提出的条件,以下内容似乎非常有效:
apply
答案 0 :(得分:5)
Maxima printf
实现了Common Lisp FORMAT中的大部分或全部格式化操作符,这些操作符非常广泛;请参阅:http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm另请参阅Maxima中的? printf
以获取格式化运算符的缩写列表。
特别是对于列表,您可以执行以下操作:
printf (os, "my list: ~{~a~^, ~}~%", a);
将a
的元素分隔为,
。这里"~{...~}"
告诉printf期望一个列表,~a
是如何格式化每个元素,~^
意味着省略最后一个元素之后的元素间内容,,
表示把它放在元素之间。当然,
可以是任何东西。
有很多变化;如果这不是你想要的,也许我可以帮你找到它。