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

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

时间:2024-07-28 17:20:34浏览次数:14  
标签: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

相关文章

  • lua可变参数
    遍历可变参数localfunctionTest1(...)localargCnt=select("#",...)fori=1,argCntdolocalitem=select(i,...)print(i,item)endendTest1(4,5,6) 遍历可变参数方式2localfunctionTest2(...)localargs={...}......
  • 当 Visual Studio 检测到代码没有问题时,无法弄清楚为什么它返回“语法错误”
    fromkivy.appimportAppfromkivy.uix.gridlayoutimportGridLayoutfromkivy.uix.labelimportLabelclasstest(App):defbuild(self):self.window=GridLayout()self.label=Label(text="hello")self.window.add_widge......
  • 反转函数以获得给定排列的字典索引
    我正在处理一个Python3代码挑战,其中消息根据52张标准扑克牌的洗牌顺序进行编码或解码。我已经找到了如何对消息进行编码,但我很难反转该函数以从给定的洗牌顺序中获取消息。我有一个函数可以根据索引查找卡片列表的字典排列。我现在需要一个从卡片列表中进行排列并输出其索引......
  • python---字典遍历
    1、三种常见的字典遍历实现defget_key_value(dics):  '''遍历所有键值对'''  forkey,valueindics.items():    print(f"{key}:{value}")defget_keys(dics):  '''遍历所有的键'''  forkeyindics......
  • Lua 语法之迭代器
    迭代器主要是用来遍历表的两个迭代器区别#ipairspairs索引必须数字且连续索引必须数字且连续索引可以随意从1开始到nil从1开始到nil从1开始到无其他索引字符索引不识别字符索引不识别字符索引识别关键字ipairs--#得到长度其实并不准确一般不......
  • python基本语法三天速成系列day1(看完这篇你就会)
    注释注释是代码非常重要的一部分,它的主要作用有:解释代码目的:注释可以说明代码段或函数的目的和功能,帮助其他开发者快速理解代码的意图。复杂逻辑说明:对于复杂的算法或业务逻辑,通过注释可以解释这些逻辑是如何工作的,降低后续维护的难度。提高可读性:良好的注释可以使代码结......
  • Lua 语法_复杂类型表____数组与二维数组
    复杂数据类型Lua所有的复杂类型都是table(表)数组如何用Luatable(表)实现数组--lua表中没有具体的限制可以是数值,字符串,布尔值a={1,2,3,4,"洛溪",true,nil}--Lua中默认索引从1开始0如果没有自定义索引则为空nilprint(a[0])--#号时用的获取长度的关键字--......
  • Python 教程(二):语法与数据结构
    目录前言专栏列表语法特点实例代码基本数据类型变量命名规则赋值动态类型作用域示例代码运算符`list`、`set`和`dict`数据结构区别1.list(列表)2.set(集合)3.dict(字典)总结前言Python是一种计算机编程语言。每种编程语言都有自己的语法规则。在本教程中,我们将学......
  • java 基本语法3
    1.方法的定义格式如:publicstaticvoidadd(intx,inty){returnx+y;}java的方法感觉就是c中的函数,子例程。但java是一个面向对象的语言,它的每一个方法都在类中,其中由于主方法的格式:publicstaticvoidmain(String[]args){},所以他只能调用静态的成员,所以在方法中也应该用......
  • MySQL的DDL和DML操作语法
    一、SQL分类SQL,英文:StructuredQueryLanguage,结构化查询语言。是用于操作关系型数据库的编程语言。SQL定义操作所有关系型数据库的统一标准,可以使用SQL操作所有的关系型数据库管理系统,以后工作中如果使用到了其他的数据库管理系统,也同样的使用SQL来操作。......