轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里
可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
8种数据类型
number 实数 ,可以是整数,浮点数
string 字符串,一旦赋值不能被修改,可以通过方法string.gsub()来修改
nil 全局变量没被赋值默认为nil,删除变量就赋值为 nil
boolean(bool) false 和nil为假 ,其它都为真
function 函数
table 数组、容器
userdata (类,其它语言转换过来就变成userdata类型)
thread 线程
注释
--[=[
多行注释
多行注释
]=]
nil
nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值
数据类型
Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。
Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。
boolean
lua中只认为nil和false为假,其余都为真
字符串
1.字符串由一对双引号或单引号来表示。
2.也可以用 2 个方括号 "[[]]" 来表示"一块"字符串。
3.在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字
变量
Lua 变量有三种类型:全局变量、局部变量、表中的域。
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
赋值语句
Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a, b = 10, 2*x <--> a=10; b=2*x
遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:
x, y = y, x -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
1.变量个数 > 值个数,按变量个数补足nil
2.变量个数 < 值的个数, 多余的值会被忽略