lua脚本语言火速入门教程

发布时间:2019-05-17  栏目:MyBatis  评论:0 Comments

lua作为很好的嵌入式语言能够充裕好的当作c/c++补充,在游戏行当是赢得了科学普及的应用

[Lua]入门教程,lua入门教程

直接在观念,能或不能够把她引进商业领域的平整语言呢?将事情规则日常变的有个别提炼出来,

 

而无须重新编写翻译程序。作为规则引擎的剧中人物实行利用

什么是Lua

  Lua 是二个秀气的脚本语言。是巴西金奈天主教大学(Pontifical
Catholic University of Rio de Janeiro)里的一个研究小组,由罗伯托Ierusalimschy、Waldemar Celes 和 Luiz Henrique de
Figueiredo所组成并于1993年开辟。
其陈设指标是为了放置应用程序中,从而为应用程序提供灵活的恢弘和定制成效。Lua由规范C编写而成,大概在具有操作系统和平台上都能够编译,运转。Lua并不曾提供有力的库,那是由它的牢固决定的。所以Lua不相符当作支付独立应用程序的语言。Lua
有2个并且开始展览的GIT项目,提供在一定平台上的即时编写翻译成效。
  Lua脚本能够很轻易的被C/C++
代码调用,也足以扭转调用C/C++的函数,那使得Lua在应用程序中得以被分布应用。不止作为扩大脚本,也足以作为经常的安插文件,代替XML,ini等文件格式,并且更便于通晓和保证。
Lua由规范C编写而成,代码简洁精彩,大致在具备操作系统和平台上都足以编译,运营。
2个完好的Lua解释器可是200k,在现阶段持有脚本引擎中,Lua的快慢是最快的。那总体都决定了Lua是用作嵌入式脚本的极品选项

行使前当然得设置一下去http://www.lua.org/下载二个Lua_v5.1.4.二三.exe安装,装完之后实践

Lua里的笺注

单行注释

动用五个减号表示注释的始发,一直持续到行最后一地点。相当于C语言中的”//”。

1 2 --这里是一行注释 print("Hello Lanou")

多行注释

使用”–[[“表示注释开端,使用”]]”表示注释甘休。这种注释约等于C语言中的”/*”和”*/”。

1 2 3 --[[这里是第一行注释 这里是第二行注释]] pring("Hello Panda")

能够用 lua.exe逐行解释的情势,或许写完脚本用lExecutor.wlua执行

Lua里的变量

在私下认可情状下,Lua里以为具有的变量都以全局变量。借使要求定义局地变量,则在申明变量时索要使用local表达。

与此同时在赋值的时候,允许同时给多少个变量进行赋值。

1 2 3 4 5 6 7 8 9 10 11 -- i是一个局部变量 local i = 1   -- name是一个全局变量 name = "Lewis"   -- age,height都是局部变量 local age,height = 34,183.5   -- gender,company都是全局变量 gender,company = "男","蓝鸥"

  

1)先来个helloworld

Lua里的运算符

算数运算符

1 2 3 4 5 6 7 8 9 10 11 12 13 14 -- +(加法) print(1 2)   -- -(减法) print(1 2)   -- *(乘法) print(1 2)   -- /(除法) print(1 2)   -- ^(乘方) print(1 2)

相比较运算符

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 -- <(小于) print(1 2)   -- >(大于) print(1 2)   -- <=(小于等于) print(1 <= 2)   -- >=(大于等于) print(1 2)   -- ==(等于等于) print(1 == 2)   -- ~=(不等于) print(1 ~= 2)

逻辑运算符

在行使逻辑运算符时与C语言差距非常大。

在Lua语言里,唯有false和nil才为false,别的任何数据都以true,0也是true!!!

and 和 or 的演算结果不是true和false,而是和她的多少个操作数相关。

 

a and b:如果a为false,则返回a;否则,返回b;

a or   b:如果a为true,则返回a;否则,返回b;

1 2 3 4 5 6 7 8 -- and(与) print(1 and 2)   -- or(或) print(1 or 2)   -- not(非) print(1 not 2)

通过Lua里的这种个性,能够依样画葫芦C语言中的 ?:运算符

比方:C语言中的 x=a?b : c,在Lua中,可以写成 x = a and b or c。

复制代码 代码如下:

Lua里的数据类型

关键字 描述
nil 空值,所有没有使用过的变量都是nil;nil既是值,又是数据类型
boolean 布尔类型,只有两个有效的值:true和false
number 数值类型,在Lua里,相当于C语言里的double
string 字符串,如果愿意的话,字符串是可以包含"\0"字符的
table 关系类型,这个类型的功能比较强大
function 函数类型,可以由函数类型来声明变量
userdata 这个类型专门与Lua的宿主打交道。宿主通常是由c语言和c++语言开发的,在这种情况下,userdata可以是宿主的任何类型,常用的是结构体和指针类型
thread 线程类型,在Lua里没有真正的线程。

> print ‘helloWorld’
helloWorld
> print(“helloWorld”) –注释是那样写的!
helloWorld
> a=’hello’
> print(a)
hello

Lua里的代码块

在C语言中代码块是有”{“和”}”括起来的,在Lua中,使用do和end关键字括起来的。

1 2 3 do print("Hello") end

二)主要类型

Lua里的关系项目

关联项目,是三个十一分有力的品种。那些种类类似于C++语言里的投射结构,类似于PHP语言里的array对象,类似于OC里的NSDictionary对象。

在Lua里的涉嫌项目(Table)定义很轻松,它重要特征是采用”{“和”}”来括起来1体系的成分。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 --声明一个关系类型的全局变量table table = {}   --赋值关系变量table索引为0时的值是34 table[0] = 34   --同时也可以写成 table.name = "Lewis" table["name"] = "Lewis" table.gender = "男"   --同样也可以将索引为"son"的对象写成另外一个表格 table["son"] = {name = "DD",gender = "男"}   --访问对象时就可以使用 print(table.son.name)

未有差距于也得以如下宣示

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -- 声明关系变量table table = {     10,--相当于[1] = 10     [100] = 40,         lewis = { -- 同样也可以写成 ["lewis"] =          age = 34, -- 同样可以写成 ["age"] = 34         gender = "male",     },       20, --相当于[2] = 20 }   print(table[2])

复制代码 代码如下:

Lua里的函数

在Lua中,函数的概念特别轻松。可是要留心的少数便是,return语句一定要写在end从前。假使大家非要在函数中加三个return语句,那就应当写成

1 2 3 4 do --return语句一定要在一个代码块结束前 return end

函数比如

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -- 声明函数类型变量sum function sum( v1,v2 )     -- 函数体     return v1 + v2 end   -- 同样函数变量也可以如下声明 mul = function (v1,v2 )     -- 函数体     return v1 * v2 end   --调用第一个函数sum print(sum(2,3)) --调用第二个函数mul print(mul(3,4))

> a=1
> b=”abc”
> c={}
> d=print
>
> print(type(a))
number
> print(type(b))
string
> print(type(c))
table
> print(type(d))
function
>

Lua里的类

方今曾经说过,表类型能够具备自由档期的顺序的值,包罗函数!

据此,大家就可以创制3个具有函数变量的表。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 lewis = {     age = 34,     work = function (self,message)         -- 函数体         self.age = self.age + 1;         print(self.age .. message)     end }   print(lewis.age) lewis.work(lewis,"上班")   --也可以如下调用方法 lewis:work("上班")

 

结束

就如C语言同样,Lua里提供了成都百货上千的行业内部函数库来增加语言的效应。使用这个函数,能够很便宜的操作各样数据类型。

能够参照《Programming in Lua》那本书。

http://www.bkjia.com/IOSjc/925529.htmlwww.bkjia.comtruehttp://www.bkjia.com/IOSjc/925529.htmlTechArticle\[Lua\]入门教程,lua入门教程 什么是Lua Lua
是二个细密的脚本语言。是巴西天津天主教大学(Pontifical Catholic
University of Rio de Janeiro)里…

如上所示,lua首要有多样类型,即数字,字符串,table(其实领会能够知道为javascript的object),以及函数类型,

不移至理了,还有最常的bool型了,true以及false,(这里不思虑nil,以及userdata,thread等)

函数类型的变量,加上”() “即能够举行,如

复制代码 代码如下:

> d(b)
abc

三)变量及常量,字符串

复制代码 代码如下:

> a,b,c,d = 1,2,’c’,{1}

> print (a,b,c,d)
      2       c       table: 0041BC58

> a=”single ‘quoted’ string and double \”quoted\” string inside”

> b=’single \’quoted\’ string and double “quoted” string inside’

> c= [[ multiple line

>> with’single’

>> and “double” quoted strings inside.]]

>

> print(a)

single ‘quoted’ string and double “quoted” string inside

> print(b)

single ‘quoted’ string and double “quoted” string inside

> print(c)

 multiple line

with’single’

and “double” quoted strings inside.

 > a=a..”看本身给接上”  –字符串用多个..能够展开连接

> print(a)

single ‘quoted’ string and double “quoted” string inside看自个儿给接上

笔者们关心一下lua比较特别的地点

1.宣称变量及给变量赋值的时候,可以多变量一同赋值
二.字符串常量能够用双引号及单引号,并且混用的时候绝不转义字符,跟php有一点点类型,还足以用”[[]]”括起来

那点类似于c#里头字符串能够增进@符号,可以保存字符串内的格式

4)逻辑调节语句

复制代码 代码如下:

> a=拾 –逻辑调控语句就不赘述了,反正就那多少个词,跟pl/sql有一些像

> if a==10 then

>> print(“我是10”)

>> elseif a== 11 then

>> print(“我是11”)

>> else

>> print(“笔者是水户洋平等等”)

>> end

我是10

伍)循环结构

复制代码 代码如下:

> –第一种while循环
> a=1
> while a~=10 do
>> io.write(a..”  “)
>> a=a+1
>> end
1  2  3  4  5  6  7  8  9  >
> –第二种repeat、until循环
> a=0
> repeat
>>      a=a+1
>>      print(a)
>> until a==5
1
2
3
4
5
> –第三种for循环
> for a=1,4 do
>>      io.write(a)
>> end
1234>
> –比较非常,有个步进的概念,如下是以贰为步进
13> for a=1,4,2 do
>> io.write(a..’ ‘)
>> end
1 3 > for a=1,5,2 do
>> io.write(a.. ‘  ‘)
>> end
1  3  5  >

6)函数及其应用

复制代码 代码如下:

> –1.先来个最简单易行的

> function myFunc1()

>>      print(“hello function”)

>> end

> myFunc1()

hello function

> –二.再来个带参数的

> a=1

> b=2

> function myFunc2(par1,par2)

>>      return par1+par2

>> end

> c=myFunc2(a,b)

> print(c)

> –叁.以至能够再次来到三个变量

> a=1

> b=2

> function myFunc3(A,B)

>>      return B,A

>> end

> c = myFunc3(a,b) –c会等于回到的首先个,在此相反过来即为2

> print(c)

> c,d=myFunc三(a,b) –当然即便给四个变量赋值就从未有过问题了

> print(c,d)
      1

> print(myFunc三(a,b)) –直接打字与印刷就把具备打字与印刷出来
      1

> –4.还是可以是变参

> function myFunc4()

>> print()

>> end

> myFunc4(a,b,c,d)
      2       2       1

七)table(笔者认为知道object也得以)的应用

复制代码 代码如下:

> linbc={}

> linbc.sex = “男”

> linbc.age = 27

> print(linbc,linbc.sex,linbc[“age”])

table: 0041ED50 男      27

> A=linbc

> print(A[“sex”])

> print(A)  –引用类型,看A以及linbc内部存款和储蓄器地址是同等的

table: 0041ED50

>  –瞧那用法,跟javascript的用法基本1二分

>  –其实还能清楚为hashmap似的键值对

> for i,v in pairs(linbc) do

>>    print(i,v)

>> end

age     27

sex     男

>  –也能够视作数组,下标是从一伊始的喔

> arr={1,2,3,”a”,’b’,linbc}

> for i,v in pairs(arr) do

>>    print(i,v)

>> end
      1
      2
      3
      a
      b
      table: 0041ED50

>  –既然作为数组吧,那自然是足以追加记录的啊

> table.insert(arr,A)

> table.foreach(arr,function(i,v) print(v) end)

a

b

table: 0041ED50

table: 0041ED50

> –瞧下边,能够foreach,还是能够用无名函数喔

> –当然也得以用下标访问了

> print(arr[1])

> –调用table.insert会自动给扩展下标,如

> table.insert(linbc,”hello”)

> print(arr[1])

1

您或许感兴趣的著作:

留下评论

网站地图xml地图