加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua基础

发布时间:2020-12-14 22:02:18 所属栏目:大数据 来源:网络整理
导读:--?mac?上有很多文本编辑器,Himi找了很多,感觉TextMate是比较好用的,小巧且功能强大!而且免费,图标是个小菊花?-?---?注释语句?--[[??注释段落语句??]]--?--引用其他lua文件,不需要加上(.lua)后缀--require?"xx"?--变量不需要定义,可以直接赋值count?=
--?mac?上有很多文本编辑器,Himi找了很多,感觉TextMate是比较好用的,小巧且功能强大!而且免费,图标是个小菊花?-?-

--?注释语句

?

--[[??

注释段落语句

??]]--

?

--引用其他lua文件,不需要加上(.lua)后缀

--require?"xx"

?

--变量不需要定义,可以直接赋值

count?=?100??--成员变量

local?count?=100??--局部变量

?

--方法定义

function?hello(...)

????--打印

????print("Hello?Lua!");

????print(string.format(...))

end

?

--?每一行代码不需要使用分隔符,当然也可以加上

--?访问没有初始化的变量,lua默认返回nil

?

--?调用函数形式

hello("你懂的")

?

--打印变量的类型

isOK?=false

print(type(isOK))

?

--?基本变量类型

a?=nil?--Lua?中值为nil?相当于删除

b?=10

c?=10.4

d?=false

--定义字符串,单引号,双引号都可以的

e?="i?am"

d?='himi'

?

--两个字符串的连接可以如下形式

stringA?="Hi"

stringB?="mi"

print(stringA..stringB)

?

--另外Lua也支持转移字符,如下

print(stringA.."n"..stringB);

?

--修改字符串的部分gsub,可以如下形式:(将stringA字符串中的Hi修改为WT)

stringA=string.gsub(stringA,"Hi","WT")

print(stringA);

?

--将字符换成数字tonumber(不转也会自动转)

--将数字换成字符tostring(不转也会自动转)

stringC?=?"100"

stringC?=?tonumber(stringC)

stringC?=?stringC?+20

stringC?=?tostring(stringC)

print(stringC)

?

--取一个字符串的长度使用?#

print(#stringC)

?

--创建?表

tableA?={}

m?=?"x"

tableA[m]?=100

m2?='y'

tableA[m2]?=200

print(tableA["x"].."n"..tableA.y)

--另外表还可以如下形式(从1开始)

tableB?={"4","5","6","7","8"}

print(tableB[1])

?

--算术操作符

c1?=?10+2

c2?=?10-2

c3?=?10*2

c4?=?10/2

c5?=?10^2

c6?=?10%2

c7?=?-10+2

print(c1.."_"..c2.."_"..c3.."_"..c4.."_"..c5.."_"..c6.."_"..c7)

?

--控制操作

--if?then?elseif?then?else?end

abc?=10

if??abc?==10?then

????print("v1")

elseif?abc?==?9?then

????print("v2")

else

????print("v3")

end

?

--for

--从4(第一个参数)涨到10(第二个参数),每次增长以2(第三个参数)为单位

for?i=4,10,2?do

????print("for1:"..i+1)

end

--也可以不制定最后一个参数,默认1的增长速度

for?i=4,10?do

????print("for2:"..i+1)

end

?

tableFor?=?{"himi1","himi2","himi3","himi4","himi5"}

for?k,v?in?pairs(tableFor)?do

????print("for3:key:"..k.."value:"..v)

end

?

--while

w1?=?20

while?true?do

????w1=w1+1

????if?w1?==25?then

????????break

????end

end

print("whlile:"..w1)

?

--repeat

????aa?=20

????repeat?aa?=?aa+2

????????print("repeat:"..aa)

????until?aa>28

?

--关系操作符

--需要注意的是不等于符号?~=??而不是!=

ax?=10

bx?=20

?

if?ax?>bx?then

????print("GX1")

elseif?ax<bx?then

????print("GX2")

elseif?ax>=bx?then

????print("GX3")

elseif?ax<=bx?then

????print("GX4")

elseif?ax==bx?then

????print("GX5")

elseif?ax~=bx?then

????print("GX6")

else

????print("GX7")

end

其中主要需要注意的是,判断语句不等于,不再是!=?,在Lua中是~=?

,这个要注意。另外关于一些常见的函数如下详解:

--函数详解



--有一个返回值的函数

function?funTestBackOne(aCount)

????local?aCount=?aCount+1

????return?aCount

end

?

a?=20

print(funTestBackOne(a))

?

--有多个返回值的函数

function?funTestBackMore()

????return?2,3

end

?

a,b?=funTestBackMore()

print(a.."?and?"..b)

?

--有变长参数的函数

function?funTestUnKnow(?...?)

????print(...)

end

funTestUnKnow(a,b,"Himi")

?

--闭合函数(一个函数写在另外一个函数内)

function?funTest1(?...?)

????local?d?=?12;

????d=d+...

????function?funTest2(?...?)

????????print(d)

????end

????funTest2()

end

?

funTest1(100)

?

setmetatable 设置 table的元表,

?self.__index = self 设置查找失败后向上索引的 table?

?2者是实现继承的核心

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读