Skip to content

8.2 - 库中的兼容性问题

  • print函数不会调用tostring来格式化其参数,而是有硬实现的方法。你应当使用 __tostring 来改变某个值的打印方式。
  • math.random中使用的伪随机数生成器现在会从一个有些随机的随机种子开始。此外,其使用了不同的算法。
  • 默认情况下,utf8库中的解码函数不在接受UTF-16中的代理项作为有效码点。如果需要宽松些的码点判断,可以使用相关函数的额外参数(lax)。
  • collectgarbage函数中的 "setpause" 和 "setstepmul" 选项已经被弃用。你应当使用新选项 "incremental" 来设置它们。
  • io.lines函数现在会返回四个值,而不是一个。将该函数的返回值作为另一个函数的唯一参数使用时会有问题,例如 load(io.lines(filename, "L")) 。为了修复这样的错误,你可以将其用括号括起来,以确保其只会传出一个结果。