Lua语言中的“惊喜”

2015/02/26

Lua在有些地方没有采用其他语言(尤其是C)的约定俗成,所以经常给程序编写者带来惊喜(surprise, “gotcha”)。根据我的经验,整理如下:

  1. 不等号是~=,而不是!=
  1. 未用local声明的变量名都是全局变量。引用未定义的全局变量,得到的值是nil
  1. 使用for语句循环一个表时,在in关键字后面必须是pairs或者ipairs。简单的for x in tablename是不对的。
  1. 如果s = "Hello, world",则s[5]的值是nil
  1. 表的起始下标默认是1,而不是0。
  1. (Lua 5.3) 异或运算的符号是~,而不是^
  1. 没有continue