Lua基础(C#的差异)二

table表

table 是 Lua 语言中的一种“数据/代码结构”,可以用来帮助我们创建不同的“数据类型”,table是引用型的

  • table初始化
--初始化 table
local tempTable = {}
local DicsTable = {}

--给table赋值
--数组方式
tempTable[1] = "TempA"
tempTable[2] = "TempB"
--键值对方式
DicsTable["key"] = "xiaoA"
DicsTable["key2"] = "xiaoB"

--添加数据,适合“数组模式”
table.insert(tempTable,"CC")
--移除数据
table.remove(tempTable,2)
--获取长度,适合“数组模式”
print(#tempTable)

--迭代器方式遍历 table,读取数据
--键值对结构,用pairs方法
for key, value in pairs(DicsTable) do
    print(key,value)
end
--数组结构,用 ipairs 方法
for key,value in ipairs(tempTable) do
    print(key,value)
end

模块

将一些常用的函数封装到一个独立 lua 脚本中,然后提供给其他的 lua 脚本访问使用。

  • 模块当中基本的成员就是变量和函数
--定义模块
Calc = {}

--定义变量和函数
Calc.name = "计算器"
function Calc.Add(a,b)
    return a+b
end

--模块最后要写 return 模块名
return Calc
  • 引用模块用require
--引入模块
require("Mudule")

--调用模块方法
print(Calc.name)
print(Calc.Add(2,3))

Metatable  元表

元表(metatable)就是让两个表之间产生“附属”关系,只需要操作主表,就可以间接的操作元表。

TableA = {name = "小红",age = 23}
TableB = {gender = "女",}

--设置表B为表A的元表
setmetatable(TableA,TableB)
--判断表A是否有元表
print(getmetatable(TableA))
--设置索引后,表A可以访问表B成员
TableB.__index = TableB 

print(TableA.name)
print(TableA.gender)
发布了9 篇原创文章 · 获赞 2 · 访问量 2711

猜你喜欢

转载自blog.csdn.net/u014288698/article/details/104065258