初识Lua

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,

其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。


Lua特性说明

1.采用标准c语言编写,编译后源码仅100多k

2.丰富的扩展接口和机制,自动内存管理

3.支持面向过程和函数式编程

应用场景

1.独立应用脚本

2.游戏开发

3.web应用脚本

.....

热更新

热更新技术就是可以在不重新下载客户端的情况下,实现更新游戏内容常见于移动端。

c#代码必须经过编译,编译过程无法在移动平台完成,所以当游戏逻辑变更的时候,必须要在开发环境下对源文件重新编译,上传用户体验差,浪费时间


Lua基本语法

print()是Lua中内置的输出语句

Lua中的字符串用””或者’’都可以

�Lua中每一条语句都不需要分号(;)结束


--> 变量

print(var)

gVar = 0 -- 全局变量

--lua中是没有数据类型的

var = 0

print(type(var))  -- number

var1 = 0.2

print(type(var1))  -- number

在lua中number相当于C#中的值类型(int float double)

默认number 就是 double

var5 = function ()

print("lua")

end

print(type(var5))  -- function类型

var6 = {}

print(type(var6))  -- table类型


演示局部变量和全局变量,这里的do和end 与C#中的{}差不多

do

c = 5 -- 默认是全局变量

local c2 = 1 -- 局部变量

end

print(c,c2) -- 打印出来的就是 5 nil  


lua可以对多个变量同时赋值,变量列表和值列表 各个元素之间用,隔开,赋值语句右边会依次赋值给左边

x,y,z = 1,2,3  --如果左边只有x,y 那x = 1 y = 2  ,3不管 如果右边只有1,2那z = nil

运算符   + - * / %(取余) ^(次方) -(负)

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

逻辑运算符  and(&&) or(|) not(!)

连接运算符 ..(相当于C#中的 + )

长度运算符 #   能够得到字符串,表..的长度

运算符优先级,由高到低

^

not -

* /

+ -

..

> >= < <= == ~=

and

or


Lua分支结构

if双分支结构

 a = 50

if (a < 0) then

print("a的值小于0")

else

print("a的值大于等于0")

end


if-elseif-else结构

a = -1

if(a>0)then

elseif(a < 0)then

print("a的值小于0")

elseif(a == 0)then

else

end


Lua循环之 while循环

输出1-100的和


sum = 0

a = 0

while(a <= 100)

do

a = a + 1

sum = a + sum

if(a == 100)then

print(sum)

break

end

end

Lua循环之 repeat..until

输出15句hello world

a = 10

repeat

print("hello world")

a = a + 1

until a > 15

Lua循环之for循环

输出100以内的奇数

for i=1,100 do

if(i % 2 == 1)

then

print(i)

end

end

Lua的函数

1.无参无返回值

function Say()

print("LUA")

end

-->函数的调用

Say()

无参有返

-- var = function()

-- return "lua"

-- end

-- print(var())

有参无返

var = function (arg)

print("hello"..arg)

end

var(" lua")

有参有返

var = function (a,b)

return a+b

end

print(var(2,1))


演示函数作为参数传递给函数

function MyFunc(para)

para()

end

function Say()

print("hello")

end

MyFunc(Say)


演示2

function MyPrint(param)

print("两个数的和为",param)

end

function Add(num1,num2,funcParam)

result = num1 + num2

funcParam(result)

--return result

end

Add(10,2,MyPrint)


在lua中函数可以有多个返回值

function F(a,b)

return a+b,a-b,a*b,a/b

end

var,var1,var2,var3 = F(10,10)

print(var,var1,var2,var3)


lua中函数的可变的参数列表

function Sum( ... )

print("求和函数")

local args = {...}

print("总共传入"..#args.."个参数")

sum = args[1] + args[2]

print(sum)

end

Sum(1,5)


数组

array = {"c#","unity","lua"}

for i=1,3 do

print(array[i])

end

这里需要注意lua中的数组是从1开始的,当然你也可以自定义下标


二维数组

array = {}

for i=1,3 do

array[i] = {}

for j=1,3 do

array[i][j] = i * j

end

end

for i=1,3 do

for j=1,3 do

print(array[i][j])

end

end

演示泛型迭代器

days = {"星期一","星期二","星期三","星期四","星期五",

"星期六","星期七"}

for index,value in pairs(days) do

 print(index,value)

 end

这里的index和value可以改名字但是不能赋值

Lua 表

gMyTable = {

["name"] = "lucy",

["age"] = 18,

["sex"] = "woman",

["name"] = "lily",

"测试",

"测试1"

}


表中的数据的存储都是放在栈中,可以存放数组,可以存放字典,也可以全放在一个表中

for k,v in pairs(gMyTable) do

print(k,v)

end

这样读取表中数据可以全部读取

for i,v in ipairs(gMyTable) do

print(i,v)

end

这样读取就只能读取数组,并且是从1开始连续的数组

当表中有两个一样的Key值时 根据Key值取的value值一定是后面进栈的元素而不是先进栈的那个元素

t1 = {}

t1["key"] = "修改前"

t2 = t1

t2["key"] = "修改后"

print(t2.key)  --- 修改后 

print(t1.key)  --- 修改后

t2 = nil

print(t1.key)  --- 修改后  

首先t1和t2都只是引用变量 都指向了同一个地方,当t2改变了表中的数据后,在用t1得到的值一定是修改后的值,

而 t2 = nil 后只是将t2指向内存的地址给消除了,内存里的东西还在,没有改变。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,209评论 0 17
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,662评论 0 33
  • 本文参加#萨格拉斯之墓#故事征集活动,本人承诺,文章内容为原创,且未在其他平台发表过。 我 进入...
    白从义阅读 402评论 0 1
  • 让早春的风 穿过晴空下萌动的密林 追赶阳光的脚步 让影子斜躺身后 翠竹掩映桃红 敌不过青春的暖风 我们不仅仅只为自...
    微风LG阅读 169评论 2 2
  • 汽车开进山区,车中一眼看见连绵的山峦,算不得雄伟,让我这个不常出门的人去爬,实在是挑战极限了。除我之外,一行人都酷...
    吾小桐阅读 631评论 0 0