8.1 语言的变更
Lua 5.2 到 Lua 5.3 最大的变化是引入了数字的整数子类型。虽然这个变化不会影响“一般”计算,但一些计算(主要是涉及溢出的)会得到不同的结果。 你可以通过把数字都强制转换为浮点数来消除差异(在 Lua 5.2 中,所有的数字都是浮点数)。比如你可以将所有的常量都以
.0
结尾,或是使用x = x + 0.0
来转换一个变量。(这条建议仅用于偶尔快速解决一些不兼容问题;这不是一条好的编程准则。好好写程序的话,你应该在需要使用浮点数的地方用浮点数,需要整数的地方用整数。)把浮点数转为字符串的地方,现在都对等于整数的浮点数加了
.0
后缀。(例如,浮点数 2.0 会被打印成2.0
,而不是2
。)如果你需要定制数字的格式,就必须显式的格式化它们。 (准确说这个不是兼容性问题,因为 Lua 并没有规定数字如何格式化成字符串,但一些程序假定遵循某种特别的格式。)分代垃圾收集器没有了。(它是 Lua 5.2 中的一个试验性特性。)