初识Lua

作者: Unity学习的路上 | 来源:发表于2017-03-30 20:15 被阅读0次

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指向内存的地址给消除了,内存里的东西还在,没有改变。

相关文章

  • 初识Lua

    继上一篇文章安装完成之后,编写一个最简单的lua脚本小试牛刀,这里我用的是简单的vim编辑器。 vim test....

  • 初识Lua

    Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用...

  • 初识Lua

    Lua介绍 Lua是什么(Lua程序设计语言是一个简洁、轻量、可扩展的脚本语言。Lua读作/'lua/(噜啊),是...

  • Androlua+之背景

    初识Androlua+ Androlua1.0是Github上一个开源项目,该版本只支持运行简单的lua代码。国内...

  • Lua的OOP小例子

    player.lua magician.lua soldier.lua main.lua

  • lua开篇-hello lua

    1、获取lua 访问lua官网:http://www.lua.org/ 下载最新的lua版本lua-5.3.4.t...

  • 【IOS开发高级系列】Lua与OC交互专题

    1 Lua语法 Lua教程 http://www.yiibai.com/lua/lua_environment.h...

  • Lua 完全教程

    Lua 环境安装 Lua 基本语法 Lua 数据类型 Lua 数据类型:nil(空) Lua 数据类型:boole...

  • linux软件的安装与升级(lua)

    lua源码组成 lua安装 http://www.lua.org/ftp/lua-5.1.5.tar.gz

  • lua脚本

    lua脚本 执行方法下载lua 打开cmd 或者命令界面 执行lua使用lua 文件

网友评论

      本文标题:初识Lua

      本文链接:https://www.haomeiwen.com/subject/xumpottx.html