lua脚本语言快速入门教程

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

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

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

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

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

1)先来个helloworld

代码如下:

> print 'helloWorld'
helloWorld
> print("helloWorld") --注释是这么写的!
helloWorld
> a='hello'
> print(a)
hello

2)主要类型


代码如下:

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

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

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

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

代码如下:

> d(b)
abc

3)变量及常量,字符串


代码如下:

> 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.声明变量及给变量赋值的时候,可以多变量一起赋值
2.字符串常量可以用双引号及单引号,并且混用的时候无须转义字符,跟php有点类型,还可以用”[[]]”括起来

这一点类似于c#里面字符串可以加上@符号,可以保留字符串内的格式

4)逻辑控制语句

代码如下:

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

> if a==10 then

>> print("我是10")

>> elseif a== 11 then

>> print("我是11")

>> else

>> print("我是水户洋平等等")

>> 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循环
> 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>
> --比较特别,有个步进的概念,如下是以2为步进
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

> --2.再来个带参数的

> a=1

> b=2

> function myFunc2(par1,par2)

>>      return par1+par2

>> end

> c=myFunc2(a,b)

> print(c)

> --3.甚至可以返回多个变量

> a=1

> b=2

> function myFunc3(A,B)

>>      return B,A

>> end

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

> print(c)

> c,d=myFunc3(a,b) --当然如果给多个变量赋值就没有问题了

> print(c,d)
      1

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

> --4.还可以是变参

> function myFunc4()

>> print()

>> end

> myFunc4(a,b,c,d)
      2       2       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={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

(0)

相关推荐

  • lua脚本语言快速入门教程

    lua作为很好的嵌入式语言可以非常好的作为c/c++补充,在游戏行业是得到了广泛的应用 一直在思考,能不能把他引入商业领域的规则语言呢?将业务规则经常变的部分提炼出来, 而无须重新编译程序.作为规则引擎的角色进行使用 使用前当然得安装一下去http://www.lua.org/下载一个 Lua_v5.1.4.23.exe安装,装完之后执行 可以用 lua.exe逐行解释的方式,或者写完脚本用lExecutor.wlua执行 1)先来个helloworld 复制代码 代码如下: > print '

  • Lua脚本语言简明入门教程

    这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,这是多么地变态啊(/bin/sh都要1M,MacOS平台),而且能和C语言非常好的互动.我很好奇得浏览了一下Lua解释器的源码,这可能是我看过最干净的C的源码了. 我不想写一篇大而全的语言手册,一方面是因为已经有了(见本文后面的链接),重要的原因是,因为大篇幅的文

  • Go语言快速入门图文教程

    推荐阅读: go语言最新版激活教程可以点下这个链接查看. goland永久安装教程,点击此处查看. Go 这几年很火,小哈也蹭业余时间悄咪咪学习一下(我大 Java 依旧无敌

  • Go语言快速入门指针Map使用示例教程

    目录 1. 指针 1.1 指针地址和指针类型 1.2 指针取值 1.3 空指针 1.4 new 的使用 1.5 new与make的区别 2. Map 2.1 什么是Map key,value存储 hash冲突 hash冲突的常见解决方法 开放定址(线性探测)和拉链的优缺点 2.2 Map 定义 2.3 map基本使用 2.4 map的遍历 2.5 map判断某个键是否存在 2.6 map使用delete()函数删除键值对 1. 指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,

  • Jupyter notebook快速入门教程(推荐)

    本文主要介绍了Jupyter notebook快速入门教程,分享给大家,具体如下: 本篇将给大家介绍一款超级好用的工具:Jupyter notebook. 为什么要介绍这款工具呢? 如果你想使用Python学习数据分析或数据挖掘,那么它应该是你第一个应该知道并会使用的工具,它很容易上手,用起来非常方便,是个对新手非常友好的工具.而事实也证明它的确很好用,在数据挖掘平台 Kaggle 上,使用 Python 的数据爱好者绝大多数使用 jupyter notebook 来实现分析和建模的过程,因此,

  • jQuery Easyui快速入门教程

    1.什么是JQuery EasyUI jQuery EasyUI是一组基于JQuery的UI插件集合,而JQueryEasyUI的目标就是帮助开发者更轻松的打造出功能丰富并且美观的UI界面.开发者不需要编写复杂的JavaScript,也不需要对css样式有深入的了解,开发者需要了解的只是一些简单的html标签. 2.学习jQuery EasyUI的条件 因为JQueryEasyUI是基于jQuery的UI库,所以,必须需要JQuery课程的基础. 3.JQuery EasyUI的特点 基于JQu

  • ReactJs快速入门教程(精华版)

    现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领略ReactJs的风采吧~~ 文章有点长,耐心读完,你会有很大收获哦~   一.ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西

  • Vue.js 60分钟快速入门教程

    vuejs是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM.它通过一些特殊的HTML语法,将DOM和数据绑定起来.一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新. 当

  • Java的JNI快速入门教程(推荐)

    1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时性要求高的地方目前还未涉及,实时性这类话题有待考究). 解决办法:Java使用JNI可以调用现有的本地库(C/C++开发任何和系统相关的程序和类库),极大地灵活Java的开发. 2. JNI快速学习教程 2.1 问题: 使用JNI写一段代码,实现string_Java_Test_helloworld

  • Nginx服务快速入门教程

    一.Nginx介绍 1. 什么是Nginx? Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务. 其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好. 2. 为什么要使用Nginx? 随着当今互联网的迅速发展,单点服务器早已无法承载上万个乃至数十万个用户的持续访问.比如一台Tomcat服务器在理想状态下只能够可以承受住2000个左右的并发量,为了解决这个问题,就需要多台Tomcat服

随机推荐