我正在寻找 string.format
的 boolean 插值字符(正如标题所说)。
我想要一些可以这样工作的东西:
print(string.format("nil == false: %b",(nil==false))
%b 只是一个占位符,你会得到一个错误。我正在寻找'b'。我不能
做就是了:
print("nil == false: " .. (nil==false))
因为 boolean 值不能与字符串连接。我可以做:
val=(nil==false)
if val==false then truth="false" else truth="true" end
print("nil==false: ".. truth)
但是工作量太大了。
最佳答案
如果您想知道如何修改 string.format
所以它支持 boolean 值,这是你可以做到的一种方法:
do
local format = string.format
function string.format(str, ...)
local args = {...}
local boolargs = {}
str = str:gsub("%%b", "%%%%b")
for i = #args, 1, -1 do
if type(args[i]) == "boolean" then
table.insert(boolargs, 1, args[i])
table.remove(args, i)
end
end
str = format(str, unpack(args))
local j = 0
return (str:gsub("%%b", function(spec) j = j + 1; return tostring(boolargs[j]) end))
end
end
print(string.format("%s is %b", "nil == false", nil==false))
跟随它可能有点令人困惑。这个想法是 gsub 字符串中的所有“%b”并用双转义替换它
%%b
所以格式不会试图解释它。我们让string.format
做它的事情,我们得到结果并处理%b
我们自己手动。
关于string - lua中string.format函数的 boolean 插值字符是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18677353/