第20章中的 string.format
函数在末尾进行了描述:
string.format
函数是格式化字符串(通常用于输出)时非常强大的工具。 它返回一个格式化后的字符串,其变量数目取决于给定的第一个参数,即所谓的格式字符串。 格式字符串的规则类似于标准 C 的printf
函数: 它由常规文本和指令组成,控制每个参数在格式化字符串中的位置和方式。
Lua 参考手册 中表示:
格式字符串遵循标准C中
printf
函数家族的相同规则。 唯一的区别是不支持选项/修饰符*
,l
,L
,n
,p
, 和h
,而且还有一个额外的选项q
。
该函数的实现位于strlib.c
的 str_format()
中,它本身解释了格式字符串,但在确定每个字段所期望的值类型(基本上是字符串或数字)与每个字段相对应之后,转而使用 C 库的实现 sprintf()
来实际格式化每个字段。
如果你使用的是安装程序,那么你的硬盘中应该有“Lua快速参考”HTML文件。
例如:../Lua/5.1/docs/luarefv51.html
在里面,你将找到:
string.format (s [, args ])
除了其他答案所提到的,Lua确实有布尔数据类型,而C则没有。C使用数字来表示布尔值,其中0为false
,其余数值均为true
。
然而,在Lua中将布尔值格式化为字符串时,
local text = string.format("bool is %d", truth)
gets(至少在Hammerspoon中):
'format'的第2个参数错误(应为数字,但得到了布尔值)
您可以改用%s
来表示布尔值(与字符串一样):
local text = string.format("bool is %s", truth)