首页 > 其他分享 >Lua 语法 复杂类型表 字典 , 类,结构体,表的公共操作

Lua 语法 复杂类型表 字典 , 类,结构体,表的公共操作

时间:2024-07-28 17:20:34浏览次数:22  
标签:end name -- t1 语法 Lua Student print 字典

字典

字典的本质运用 键值对 一个键对应一个值 和自定义索引表 相似

定义使用
 --字典是由键值对构成

a ={["name"]="洛溪",["age"]= 14, ["1"]= 10}

-- 访问单个变量 用中括号填键 来访问

print( a["name"])
print( a["1"])
print( a["age"])

--还可以类似成员变量的形式得到值
-- 虽然可以通过,成员变量的形式得到值 但是不能是数字
print(a.name)
print(a.age)

增删改
-- 修改
a["name"]= "洛溪欢迎"

print(a.name) 
-- 新增
-- Lua 增加 直接赋值 如果没有键 会自动创建
a["sex"]=false;
print(a["sex"])

--删除
a["sex"] =nil
print(a.sex)
遍历
 print("***********字典的遍历1************")
-- 如果要模拟字典 遍历一定用pairs
for i,k in pairs(a) do
	--可以传多个参数 一样可以打印出来
	print(i.."_"..k)
end
 print("***********字典的遍历*2***********")
for k in pairs(a) do
--通过键直接访问表中元素
	print(k)
	print(a[k])
end 
print("***********字典的遍历3************")

for _,v in pairs(a) do
--只需要输出值
	print(v)
end

类和结构体

Lua 中是默认没有面向对象的 需要我们自己来实现
成员变量 成员函数...

 Student ={
 	--年龄
 	age=18,
 	--性别
 	sex=true,

 	--升级函数
 	Up = function()
 		print("升级"..Student.age)
 	end,

 	-- 成长函数
 	Learn =function(t)
 		print("锻炼自己",t.sex)
 	end
 }
 
 
--lua 中 . 和冒号的区别  .(成员变量)
-- 调用成员函数(需要传入值)
Student.Learn(Student)

--冒号调用方法 会默认把调用者 作为第一个参数传入方法中
Student:Learn()

-- 声明表过后 再表外去申明表有的变量和方法

-- 添加name属性

 Student.name ="洛溪"


 Student.Speak = function()
 	-- body
 	print("聊天")
 end


--第三种声明方式
 function Student:Speak2()
 	-- body
 	--lua中 有一个关键字 self表示 默认传入的第一个参数
 	print("聊天2",self.name)
 end

--C# 要是使用类 实例化对象new 静态直接点
--Lua中类的表现 更像是一个类中有很多 静态变量和函数

print(Student.age)

print(Student.name)

Student.Up();

Student.Speak();

Student:Speak2();

Student.Speak2(Student);

表的公共操作

先定义变量

t1 = {{age =1,name="洛溪"},{age=2,name="白芷"}}

t2 = {name ="艾洛溪",sex =true}

插入

关键字 table.insert

print(#t1)

--将表2赋值到表1 浅拷贝
table.insert(t1,t2)

print(#t1)

删除

关键字 table.remove

--删除指定元素
-- remove 方法 传表进入 默认会移除最后一个索引的内容
table.remove(t1)
print(#t1)
print(t1[1].name)
print(t1[2].name)

-- remove 方法 传两个参数 第一个参数 是要移除内容的表
--第二个参数 是要移除内容位置的索引 从1开始
table.remove(t1,1)
print(#t1)
print(t1[1].name)
print(t1[2])

公共操作排序

关键字 table.sort

t2={5,2,7,9,1}
--默认升序
table.sort(t2)

-- 查看是否已排序
for _,v in pairs(t2) do
	print(v)
end

-- 重写排序规则
--降序 
-- 第一个参数需要排序的表 第二个参数 需要排序的规则
table.sort( t2, function(a,b)
	if a>b then
		return true
	end
end)

-- 查看是否已排序
for _,v in pairs(t2) do
	print(v)
end

公共操作拼接

关键字 table.concat


 tb = {"123","456","789","10101"}
 
 -- 连接函数 用于拼接表中元素 返回值 是一个字符串
 str =table.concat( tb, "_" )

 print(str)

标签:end,name,--,t1,语法,Lua,Student,print,字典
From: https://www.cnblogs.com/Luo-Xi/p/18328459

相关文章