Lua数据类型
数据类型 | 描述 |
---|---|
nil | 无效值,在条件表达式中相当于false |
boolean | 包含两个值:false true |
string | 字符串由一对双引号或单引号来表示 |
function | 由C或Lua编写的函数 |
userdata | 任意存储在变量中的C数据结构 |
thread | “关联数组”、数组的索引可以是数字、字符串、表类型。Lua中,table的创建是通过"构造表达式"来完成 |
–备注:最简单的表达式是{},用来创建一个空表 |
–检测变量与值的类型
--备注:type、print是一个函数
print(type("hello world."))
print(type(10.4*3))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))
print(type(type(1)))
str = "======"
print(str)
–nil
--pairs():遍历数组(貌似是循环链表,随机节点开始)
table = {key1="v1", key2="v2",ll="v3"}
for i, j in pairs(table) do
print(i, j)
end
print(str)
table.key1 = nil
for i, j in pairs(table) do
print(i, j)
end
print(str)
table = {"11", "22", "33"}
for k, v in pairs(table) do
print(string.format("val[%d]=%s", k ,v))
end
print(str)
– boolean
--备注:Lua把false和nil看作是false,其他的(包括数字0)都为true
if false or nil then
print("至少有一个是true")
else
print("false 和 nil 都为false")
end
if 0 then
print("数字 0 是true")
else
print("数字 0 是false")
end
print(str)
–number
--备注:Lua默认只有一种数字类型(double类型),默认类型可在luaconf.h文件中修改
--double、string、function、boolean、nil
print(type(2))
print(type(2.1))
print(type(2e+1))
print(type("shd"))
print(type(pairs))
print(type(false))
print(TT)
print(str)
–string
--备注:Lua的字符串可以""或者‘’或者[[]]来表示
--备注:字符串连接用 .. 表示
str1 = "双引号"
str2 = "单引号"
str3 = "2个方括号"
print(str1)
print(str2)
print(str3)
print(str1 .. "|" .. str2 .. "|" .. str3)
print(str)
–Lua优先级
print("数字字符在进行算术运算时,隐式转换:string -> number,字符串除外(会报错)")
print("2"+6)
print(1e2+6)
--print("as"+6)
print("优先级图标如下:")
print("优先级" .. "|" .. "运算符")
print("8" .. "|" .. "^")
print("7" .. "|" .. "not、#、-(一元)")
print("6" .. "|" .. "*、/、%")
print("5" .. "|" .. "+、-")
print("4" .. "|" .. "...")
print("3" .. "|" .. ">、>=、<、<=、~=、==")
print("2" .. "|" .. "and")
print("1" .. "|" .. "or")
–table
--备注:Lua中表由"构造表达式完成",最简单的表示式是{},可直接初始化表
str4 = {}
str4["key"] = "value"
key = 1
str4[key] = 123
str4[2] = 456
str4[3] = str4[2] + str4[key]
print(key)
print(str4[key])
print(str4[2])
print(str4[3])
print(str)
–function
--备注:Lua中函数被看作是"第一类值(First-Class Value)",函数可以存在变量里
--备注:第一类值是指函数能向普通数值一样赋值给变量,也可作为参数传递给其他函数或做函数的返回值
--闭包:能够读取其他函数内部变量的函数
function function1(n)
if n == 0 then
return 1
else
return n * function1(n-1)
end
end
print(function1(5))
function2 = function1
print(function2(5))
print(str)
–thread
--备注:Lua中最主要的线程是协程,拥有自己独立的栈、局部变量和指令指针
--可以和其他协同程序共享全局变量和其他大部分东西
--备注:线程与协程的区别:
--线程可以同时多个运行,协程任意时刻只能运行一个,并处于运行状态的协程只有被挂起时才会暂停
print(str)
–userdata(自定义用户类型)
--备注:表示一种由应用程序或c/c++语言库所创建的类型,可以将任意c/c++的任意数据类型的数据存储到Lua变量中调用
--struct和指针
print(str)
参考链接:
https://www.runoob.com/lua/lua-data-types.html