1. 字符串

在lua中,字符串声明后就是不可变的值,如果再次修改,就相当于重新创建了一个新的字符串。优点是假设同一个字符串在多个地方被使用,在内存中也是只有一份,缺点是拼接字符串,会创建许多不必要的字符串,带来空间的消耗和cpu性能的消耗,如下示例

  1. local str = "Hello World"
  2. str = "new Hello world"

这种方式不能改变字符串的内容,第一条语句创建了一个字符串,并将其引用赋值给str,第二条语句创建了一个新的字符串,并将其引用赋值给str,赋值后,第一个字符串仍然存在,但是不能再访问到它,因为变量str已经指向了新的字符串。
因为字符串是不可变的,所以相同的字符串在被频繁的使用时,则直接使用同一个实例,提高效率,节约内存。
优化方法:当遇到大量字符串拼接时,由于字符串不可变,使用..进行拼接无疑会创建许多不必要的字符串,带来空间和cpu 的消耗,换一种思路解决就是,创建固定长度的table,将要拼接的字符串加入到table中,然后使用table.contact来代替..生成要拼接的字符串

2. 布尔值

在lua中,布尔值分为true 和 false,只有nil 和 布尔值false为 假,其他皆为真,因为在使用if判断真假时需要小心使用,毕竟0与空字符串也为真

3. 函数

lua中,函数声明的两种方式等价:

  1. function a()
  2. end
  3. -- 等价于
  4. local a = function()
  5. end

4. 空值

nil就是空值,空值就是nil,如果声明一个变量没有赋值,则该值为nil,如果需要删除一个变量,只需要将该变量赋值为nil