Lua 语法摘要

Lua详解http://www.runoob.com/lua/lua-metatables.html

Lua:轻量级脚本语言,不需要编译,直接运行,所有脚本语言都有这个特点

执行lua方式:(交互式编程,脚本式编程)

Lua文件是.lua后缀的

Lua语句相对C#等编译语言比较随意,语句末不用写分号也可以写分号

注释方法:单行注释:-    /     多行注释:--[[   .........   ]]-- 或 --[[ ....--]] 或 --[[ ...]]

变量:

Lua不需要写变量类型 ==> 变量名 = 值

Lua区分大小写

变量存储什么类型数据就是什么类型 类似于 var

使用type来获取变量的类型

Lua数据类型:

Number:小数类型(Lua没整型和浮点的区分)

boolean:布尔类型 (Lua里把false和nil看作是假,其他都是真)

nil:表示空数据,相当于null,对于未定义的变量,输出的结果都是nil

string:字符串类型,可以使用双引号表示,也可以使用单引号表示,还可以用[[...]]表示

字符串在处理数学运算时,会尝试转Number去计算,如果转换不成功就报错

使用(..)来连接字符串

使用#来计算字符串长度,例如:(print(#"hehe")) -- 4

table:table表示一个数组的时候,默认索引是从1开始的

table = {} ==>创建一个空表

table = {"string",true,1,nil} ==>创建表并赋值

访问table表 ==> print(table[1])

修改table表 ==>table[1]=66; print(table[1])

table表表示数组的时候 ==> table.insert(table,"hehe")==>第一个参数为表变量名,第二餐数为插入内容,方法为依次向后找,只要找到一个nil的位置就把内容插入进去

table.insert(table,66,"hehe") ==>第二个参数为插入位置,可以跳越性插入

table.insert(table,2,"hehe") ==> 从第二个位置元素开始,插入,后面元素依次后移

table表表示数组的时候的删除 ==> t = {1,2,"hehe",true} ==> table.remove(t,1) ==>删除指定索引位置元素,后面元素依次前移

table.remove(t) ==> 删除连续索引的最后一个元素

table是一个关联数组,索引可以是数字也可以是字符串

例如:t = {[2] = 10,1,2,3,5,[3]=10,[-1]=20,["hehe"] = "lol",key = "hh",c = {1,3}}

print(t[2])   print(t["hehe"])    print(t.hehe)    print(t["key"])    print(t.key)   print(t.c[2])

添加字符串为索引的元素

t["key1"] = "hh1"  t.key2 = "hehe2"  print(t.key1)   print(t["key2"])   i = "key2"   print(t[d])

Lua运算符

数学运算符: + - * / % ^    (没有自增自减类型的运算符)

关系运算符:==  >=   >   <   <=   ~=(不等于)

逻辑运算符:and or not

条件语句

if a then
 ...
end

------------------------

if a then
...
else
...
end

------------------------

if a then
...
elseif b then       //注意elseif没有空格
...
else
...
end

循环语句

a = 1
while a < 10 do 
...
a = a+1
end


---------------------------------


repeat 
    ...
    a = a+1
until a>10          //until 的条件满足,跳出循环


----------------------------------

for a = 1, 10, 3 do      //for 变量定义,条件,每次循环累加值 do 循环体 end
   ...
end



循环有break关键字跳出,没有continue关键字

局部变量和全局变量

一般情况下,定义的变量都是全局的变量,前面加local关键字就是局部变量 ==> local t = {1,2,3,true,"key" = "value"}

 

Lua 元表(Metatable) 

在lua table中 通过key 来访问 value值 当需要对以table为单位进行操作如+ - 等操作时,就需要涉及到元表的应用

而处理这种表的相加等操作的方法叫做 “元方法”

处理元表:

setmetatable(table,metatable)  ==> 对指定table设置元表(metatable),如果元表(metatable)中存在__metatable键值,setmetatable会失败

getmetatable(table) ==>返回对象的元表(metatable)

对指定表设置元表:

myTable = {}

myMetatable = {}

setmetatable(myTable,myMetatable)  ==> 把myMetatable设为myTable的元表

getmetatable(myTable) ==>返回myMetatable 

元方法  相当于重写

__index  ==>可以把方法或表数据放入__index中

例如:

t = {1,2}

print(t["hehe"]) --> nil

t = setmetatable({},{__index = {"hehe"=3}})

print(t["hehe"]) --> 3



t = {1,2,3}
func = function(t,key) 
if key = "hehe" then
return "lol"
else return nil
end
end
t = setmetatable({},{__index = func})
print(t.hehe) --> lol

rawset : 防止不断执行__newindex陷入死循环(例:rawset(table,"key","hehe"))

rawget:跳过__index函数,只从原来表中搜索(print(rawget(t,t.key)))

常用元方法还包括

__add\__sub\__mul\__div\__mod\__eq\__It\__le\_call\_tostring

迭代器:

for k,v in pairs(table) do
...
end

------------------------------

for k,v in ipairs(table) do   //顺序输出元素v
...
end

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值