Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
---|---|
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
我们定义一个变量之后,可以通过lua的一个函数来获得它的类型:type(value)
type会返回一个字符串,然后用print输出就能看到它的数据类型,包括方法function也可以识别出类型
a=100
print(type(a))
——————————————*********************************************************—————————————
——————————————*********************************************************—————————————
——————————————*********************************************************—————————————
nil
nil: 在Lua语句中,没有声明一个变量,就直接去使用这个变量的话,这个变量的值就是nil,也就是null空,nil在if判断语句里面表示false的意思,除了nil之外其他数值都被当成true。
a=100
if(a)
then
print("a有值,这个判断会当成true执行")
end
if(nil)
then
print("nil为false,所以不执行这里")
else
print("nil为false,所以执行这里")
end
所有没有申明的值,都和nil的效果是一样的
最后我们还可以通过nil来销毁变量,释放内存
a=100
print(a)
a=nil
在a被使用过后,不在使用了,就可以通过=nil来把a销毁掉,然后释放掉这一块的内存
boolean
boolean有两个值,true和false,要注意上面的nil,也被当做false使用,没有定义的变量也被当做false。其他类型的变量被当做true使用,数字0也是true
number
number就是数字类型,包括整数、小数、科学计数法
string
string 定义的时候,可以使用双引号和单引号,还可以使用 [[]] 两个中括号来声明一堆字符串
stra="liuchang"
strb='fluency'
str=[[
这里是一堆字符串
https://blog.csdn.net/Liu_ChangC
]]
print(stra..strb..str)
如果使用 “+” lua会把两个字符串进行加法运算,即使你是使用了引号,也会自动转成number类型进行运算,所以字符串的拼接,使用 “..”
a=1
b="2"
print(a..b)--结果为12
print(a+b)--结果为3
使用 “#” 来计算字符串的长度,注意一点,我们的汉字一个字占两个字节,所以在我们退格的时候,一个汉字需要删两次,注意一下就好
print(#"刘畅")--结果为4
print(#"fluency")--结果为7
table
table 的创建是通过"构造表达式"来完成,最简单构造表达式是{}
table比较像C#的字典,是通过key和value来存储数据的,但是要比字典更强大一些,里面可以放的各种类型的值是不固定的,而且key可以使string也可以是number
tab={}--创建了一个空表
tab1={key1=100,key2="test",222,"aaa",true}--初始化一个表
--获取table值的方式
print(tab1.key1)--100
print(tab1["key1"])--222
print(tab1[1])--222
print(tab1[2])--aaa
print(tab[3])--true
没有指定key的值,会给一个默认key,从1开始自动增长
修改数据
更改值的时候,只需要重新赋值覆盖就可以了
--接着上面的表
tab1.key1="str"
print(tab1.key1)--结果为str,覆盖时是可以改变值的类型
添加数据
--接着上面的表
tab1.key3="newValue"
tab1["key4"]="newValue2"
tab1[4]=100
删除值
删除时将值 =nil
--接着上面的表
tab1.key1=nil
tab1[1]=nil
--[[注意,这里删除了222这个值之后,后面的值不会自动跟上来
也就是说,你调用tab1[1]得到的还是nil,不是"aaa",和C#的List是不一样的--]]
function的用法我下一篇总结吧