Skip to content

8.1 - 语言中的兼容性问题

  • 算术运算和位运算中对字符串到数字的强制转换已经从语言核心特性中移除。对于算术运算(位运算没有)字符串库中可以使用字符串元函数来完成相似的任务。然而,与之前的版本不同,新版实现中保留了字符串中的隐式数字类型。例如,"1" + "2" 的结果是个整数,而不是浮点数。
  • 溢出的字面十进制整数常量会被作为浮点数读取,而不是做环绕。如果你想要产生之前的行为(环绕),你可以使用十六进制来表示这种常量。
  • 用 __lt 元方法来逼近 __le 的做法已经被溢出。需要用到该元函数时,该元函数必须显式地定义。
  • 数字形式的for循环的语义有一些变化。特别是控制变量不会再做环绕了。
  • 不可以在相同的可见范围内声明重名的goto标签,即时另一个标签是在封闭的语句块中声明的。
  • 终结某个对象的时候,Lua不会忽略 __gc 元函数并非时个函数的情况。任何值都将被调用,只要它存在。(和其他调用终结器时发生的错误一样,不可调用的值将会产生一个警告。)