示例:
str = " %5s %3s %6s %6s",
val = {"ttyS1", "232", "9600", "230400"}
手动格式化非常简单:
string.format( str, val[1], val[2], val[3], val[4] )
与以下内容相同:
string.format(" %5s %3s %6s %6s", "ttyS1, "232", "9600","230400")
但是,如果我不想有第五或第六个参数怎么办? 例如:
string.format(" %1s %2s %3s %4s %5s %6s %7s %", ... )
如何使用可变数量的参数实现string.format?
由于性能问题,我想避免逐个追加值。 该应用程序在嵌入式MCU上运行。
答案 0 :(得分:0)
如果所有参数的格式相同,则使用string.rep
生成任意格式的任意数量的重复。或者使用所有格式填充表格并使用table.concat
。请记住,如果您不想重新排序参数,则无需在格式中指定参数索引。
如果您只需要将空格连接在一起,请使用更合适的工具:table.concat(table_of_strings, ' ')
。
答案 1 :(得分:0)
您可以使用varargs创建表格:
function foo(fmt, ...)
local t = {...}
return t[6] -- might be nil
end
如果您希望参数列表可能包含#
,请不要在表上使用nil
。而是使用select("#", ...)
。