好吧,首先您应该尝试阅读手册的相关部分。这会让您发现布尔值没有格式说明符。
greatwolf 建议的是一种解决方案,即将值显式转换为字符串。如果您的真值可能是nil
,但您想将其输出为false
,则此技巧很有用:
truth = nil
print("nil==false: ".. tostring( not not truth ))
这样,两者nil
和false
都将显示为false
。
编辑(回答评论)
在 Lua 5.2 中,%s
说明符在内部使用自动将参数转换为字符串tostring
。因此:
print( string.format( "%s %s %s", true, nil, {} ) )
印刷:
true nil table: 00462400
否则,您可以创建自己的格式化函数包装string.format
:
local function myformat( fmt, ... )
local buf = {}
for i = 1, select( '#', ... ) do
local a = select( i, ... )
if type( a ) ~= 'string' and type( a ) ~= 'number' then
a = tostring( a )
end
buf[i] = a
end
return string.format( fmt, unpack( buf ) )
end
print( myformat( "%s %s %s", true, nil, {} ) )