文章目录
Lua是一种动态类型的语言。在语言中没有类型定义的语法,每个值都"携带"了它自身的类型信息。
在Lua中有8种基础类型:
- nil(空)
- boolean(布尔)
- number(数字)
- string(字符串)
- userdata(自定义类型)
- function(函数)
- thread(线程)
- table(表)
一、数据类型nil
nil是一种类型,它只有一个值nil,它的主要功能是用于区别其它任何值。
一个全局变量在第一次赋值前的默认值就是nil,将nil赋予一个全局变量等同于删除它。
Lua将nil用于表示一种"无效值"的情况,即没有任何有效值的情况。
二、数据类型boolean
lua中只有false和nil 为false,其余都为true
cpp
if false or nil then
print("nil is true")
else
print("nil is false")
end
if 0 then
print("0 is true")
else
print("0 is false")
end
![](https://file.jishuzhan.net/article/1729028351525392386/82c6eebadc88d941a218d8bb09f3006d.webp)
三、数据类型number
lua中,只有一种数字类型-number
8字节、双精度。
cpp
print("测试number")
a = 10
print(type(a))
![](https://file.jishuzhan.net/article/1729028351525392386/a6a0e50740d163d4223c376f0e9ef728.webp)
四、数据类型String
(一)用单引号或双引号:
cpp
print('单引号字符串')
print("双引号字符串")
(二)可以包含换行的字符串
cpp
i=[[
我是中国人
我是亚洲人
我是地球人
我是太阳系人
]]
print(i)
![](https://file.jishuzhan.net/article/1729028351525392386/cf76bb9b09ce9924faccdac19f6886e7.webp)
(三)字符串与数字做数学运算时,优先将字符串转换成数字
cpp
print("测试字符串+")
print("1"+1)
print("1"+"1")
![](https://file.jishuzhan.net/article/1729028351525392386/1b03723ccaa3c37c2bc612600111c0a5.webp)
如果字符串不能转成数字将报错:
cpp
print("测试字符串+")
print("1"+1)
print("1"+"1")
print("x"+1)
![](https://file.jishuzhan.net/article/1729028351525392386/9402c7f3896d266f7ab5c4800f54fbaf.webp)
(四)计算字符串长度
cpp
print(#"aa")
![](https://file.jishuzhan.net/article/1729028351525392386/3ce7851b303a33f6c73635db26a1ecab.webp)
五、数据类型-table
table 可做数组和map
数组下标从1开始。
lua
print("测试table")
tab1={}
tab2={"v1","v2","v3"}
tab3={key1="value1",key2="value2",key3="value3"}
print("-----打印tab3-----")
for k,v in pairs(tab3) do
print(k.."="..v)
end
print("-----打印tab2------")
for k,v in pairs(tab2) do
print(k.."="..v)
end
print("-----按数组索引打印数组------")
print(tab2[1])
print(tab2[2])
print(tab2[3])
print("-----nil相当于删除------")
tab3["key1"] = nil
for k,v in pairs(tab3) do
print(k.."="..v)
end
![](https://file.jishuzhan.net/article/1729028351525392386/bf587d248d88e91fcdb1910270cfea7e.webp)
六、数据类型-function
lua
function fib(n)
if n == 1 or n == 2 then
return 1
else
return fib(n-1)+fib(n-2)
end
end
print("fib(10) = " ..fib(10))