1. 字符串
在lua中,字符串声明后就是不可变的值,如果再次修改,就相当于重新创建了一个新的字符串。优点是假设同一个字符串在多个地方被使用,在内存中也是只有一份,缺点是拼接字符串,会创建许多不必要的字符串,带来空间的消耗和cpu性能的消耗,如下示例
local str = "Hello World"
str = "new Hello world"
这种方式不能改变字符串的内容,第一条语句创建了一个字符串,并将其引用赋值给str
,第二条语句创建了一个新的字符串,并将其引用赋值给str
,赋值后,第一个字符串仍然存在,但是不能再访问到它,因为变量str
已经指向了新的字符串。
因为字符串是不可变的,所以相同的字符串在被频繁的使用时,则直接使用同一个实例,提高效率,节约内存。
优化方法:当遇到大量字符串拼接时,由于字符串不可变,使用..
进行拼接无疑会创建许多不必要的字符串,带来空间和cpu 的消耗,换一种思路解决就是,创建固定长度的table,将要拼接的字符串加入到table
中,然后使用table.contact
来代替..
生成要拼接的字符串
2. 布尔值
在lua中,布尔值分为true 和 false,只有nil 和 布尔值false为 假,其他皆为真,因为在使用if判断真假时需要小心使用,毕竟0与空字符串也为真
3. 函数
lua中,函数声明的两种方式等价:
function a()
end
-- 等价于
local a = function()
end
4. 空值
nil就是空值,空值就是nil,如果声明一个变量没有赋值,则该值为nil,如果需要删除一个变量,只需要将该变量赋值为nil