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

Lua快速入门

发布时间:2020-12-14 22:07:29 所属栏目:大数据 来源:网络整理
导读:lua作为很好的嵌入式语言可以非常好的作为c/c++补充,在游戏行业是得到了广泛的应用 一直在思考,能不能把他引入商业领域的规则语言呢?将业务规则经常变的部分提炼出来, 而无须重新编译程序。作为规则引擎的角色进行使用? 使用前当然得安装一下去http://ww

lua作为很好的嵌入式语言可以非常好的作为c/c++补充,在游戏行业是得到了广泛的应用

一直在思考,能不能把他引入商业领域的规则语言呢?将业务规则经常变的部分提炼出来,

而无须重新编译程序。作为规则引擎的角色进行使用?

使用前当然得安装一下去http://www.lua.org/下载一个 Lua_v5.1.4.23.exe安装,装完之后执行

可以用 lua.exe逐行解释的方式,或者写完脚本用lExecutor.wlua执行

1)先来个helloworld

复制代码

> ? print ? ' helloWorld '

helloWorld

> ? print ( " " ) --注释是这么写的!

helloWorld

> ?a = hello '

> ? print (a)

hello

复制代码


2)主要类型

复制代码

> ?a = 1

> ?b = abc "

> ?c = {}

> ?d = print

>

> ? print ( type (a))

number

> ? type (b))

string

> ? type (c))

table

> ? type (d))

function

>

复制代码

? 如上所示,lua主要有四种类型,即数字,字符串,table(其实理解可以理解为javascript的object),以及函数类型,

当然了,还有最常的bool型了,true以及false,(这里不考虑nil,以及userdata,thread等)

函数类型的变量,加上"() "即可以执行,如

> ?d(b)
abc

?3)变量及常量,字符串

复制代码

> ?a,b,c,d? = ? 1 , 2 ,0)">c ' ,{ 1 }

> ? print ?(a,d)

1 ??????? 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? " ?string?inside

> ? print (b)

single?
print (c)

?multiple?line

with
single '

and ? double " ?quoted?strings?inside.?

> ?a=a.."看我给接上"? --字符串用两个..可以进行连接

> ? " ?string?inside 看我给接上
我们关注一下lua比较特别的地方

  • 声明变量及给变量赋值的时候,可以多变量一起赋值
  • 字符串常量可以用双引号及单引号,并且混用的时候无须转义字符,跟php有点类型,还可以用"[[]]"括起来,
    这一点类似于c#里面字符串可以加上@符号,可以保留字符串内的格式

?4)逻辑控制语句

10 ? -- 逻辑控制语句就不费口舌了 ,反正就这几个词,跟pl/sql有点像

> ? if ?a == then

>> ? 我是10 " )

>> ? elseif ?a == ? 11 ? 我是11 else

>> ? 我是水户洋平等等 end

我是10
5)循环结构


>?--第一种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循环0
>?repeat
>>??????a=a+1
>>??????print(a)
>>?until?a==5
1
2
3
4
5
>?第三种for循环
>?for?a=1,4?do
>>??????io.write(a)
>>?1234>
>?比较特别,有个步进的概念,如下是以2为步进
13>?4,128)">2?'?')
>>?1?3?>?5,255)">io.write(a..?5??>

6)函数及其使用

复制代码

> ? 1.先来个最简单的

> ? function ?myFunc1()

>> ?????? hello?function end

> ?myFunc1()

hello?
function

> ? 2.再来个带参数的

> ?a = 2

> ? function ?myFunc2(par1,par2)

>> ?????? return ?par1 + par2

>> ? end

> ?c = myFunc2(a,b)

> ? print (c)

3

> ? 3.甚至可以返回多个变量 function ?myFunc3(A,B)

>> ?????? return ?B,A

>> ? end

> ?c? = ?myFunc3(a,b)? c会等于返回的第一个,在此倒转过来即为2

> ? 2

> ?c,d = myFunc3(a,0)">当然如果给多个变量赋值就没有问题了 print (c,128)">2 ??????? 1

> ? print (myFunc3(a,b))? 直接打印就把所有打印出来

1

> ? 4.还可以是变参 function ?myFunc4(

)

>> ? print (

)

>> ? end

> ?myFunc4(a,128)">1
?7)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的用法基本相当

> ?? 其实还可以理解为hashmap似的键值对 for ?i,v? in ? pairs (linbc)? do

>> ???? print (i,v)

>> ? end

age?????
27

sex?????男

> ?? 也可以作为数组,下标是从1开始的喔

> ?arr = { 3 ,0)">a " ,0)">b

> ? pairs (arr)? end

1

2

3 ??????? 3

4 ???????a

5 ???????b

6 ???????table:?0041ED50

> ?? 既然作为数组吧,那肯定是可以增加记录的吧 table.insert (arr,A)

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

3

a

b

table:?0041ED50

table:?0041ED50

> ? 瞧上面,可以foreach,还可以用匿名函数喔 当然也可以用下标访问了 print (arr[ 1 ])

调用table.insert会自动给增加下标,如 table.insert (linbc,0)">" )

> ?

复制代码

(编辑:李大同)

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

    推荐文章
      热点阅读