Lua脚本的简单学习

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

lua的特点

  • 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
  • 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
  • 支持面向过程(procedure-oriented)编程和函数式编程(functional programming)
  • 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象
  • 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持
  • 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等

Lua的安装

linux下:

curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.3.0.tar.gz
cd lua-5.3.0
make linux test
make install

mac 下:

curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.3.0.tar.gz
cd lua-5.3.0
make macosx test
make install

lua的保留字、与数据类型

保留字:

-----
andbreakdoelseelseif
endfalseforfunctionif
inlocalnilnotor
returnthentrueuntilwhile
repeat

支持的数据类型:

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
booleanture or false
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

Lua的语法与使用

lua的语法十分简单,它执行直到错误的地方报错结束。

它支持交互式编程 使用lua -i 或者 lua 即可进入交互式编程。输入语句即可得到对应的结果
结束交互式编程可以使用control +c 或者 os.exit()

lua所有的变量默认是全局变量,如果想使用局部变量则需要local修饰

  • lua的输出函数为print() ,语法非常简单它会将括号中的变量、字符串、数字等依次输出
print("变量a=",a,"变量b=",b)
  • – 为单行数注释 --[[ 注释内容 ]]-- 为多行注释
    字符串直接的连接使用"…" 例如:
print("aaa" .. "bbb")
  • type可以获取变量的类型:例如
print(type("Hello world"))      --> string
print(type(10.4*3))             --> number
print(type(print))              --> function
print(type(type))               --> function
print(type(true))               --> boolean
print(type(nil))                --> nil
print(type(type(X)))            --> string

  • 在类型的比较上,nil进行比较的时候如果使用的是type的形式,则需要加上双引号或者单引号,否者不需要
print(type(x))     ->nil
print(type(x)==nil)    ->false
print(type(x)=="nil")  ->true
print(x==nil)   ->true
print(x=='nil')   ->false
  • 字符串的长度可以用‘#’去获得:
print(#"hello")   ->5
  • table 的创建通过‘构造表达式完成’,最简单的是’{}’ 用来创建一个空表,可以直接初始化表,table是一个关联数组,数组的索引可以是数字或者字符串,lua的默认初始索引是1.table不会固定长度大小,在数据添加时会自动增加,没初始化的table都nil
table1={}  或者 table2={a,b,c,d} 或者 table3={key1=value1,key2=value2}
  • 在lua中,函数被看作是’第一类值(First-Class Value)’,函数可以存储在变量里。function 可以以匿名函数(anonymous function) 的方式通过参数传递。定义方法使用function,方法体不需要使用括号,以end为结束 例如:
function testFun(tab,fun)
        for k ,v in pairs(tab) do
                print(fun(k,v));
        end
end
tab={key1="val1",key2="val2"};
testFun(tab,
function(key,val)--匿名函数
        return key.."="..val;
end
);
  • 循环控制语句:for
for( var =1,10,2)  -- 第三个参数是可选参数,默认1,表示每次循环增加的数
   print(var)
end
  • while循环:
num=1
while(true) do
num=num+1;
  if(num==10)
   then
   break
  end
print("hhhh,num =",num)
end

  • repeat 循环:
a = 10
repeat
   print("a的值为:", a)
   a = a + 1
until( a > 15 )
  • 流程控制语句 if 在if之后需要使用then
num=1
while(true) do
num=num+1;
  if(num==10)
   then
   break
  end
print("hhhh,num =",num)
end

  • 运算符:
    lua中不等于为 ~= 逻辑运算符中 非 为not 其余与其他语言相似

  • Lua中的数组 hash等都可以使用table进行代替,它的索引是从1开始的

  • Lua的迭代器:
    常用的迭代器为pairs 或者 ipairs 。他们之间的区别为pairs会遍历所有的元素,而ipairs遇到nil就会停止。

list = {"a","b","c","d","e","f","g"}

for k , v in ipairs(list) do
print(k.. "=" ..v)
end

for k , v in pairs(list) do
print(k.. "=" ..v)
end

Lua的其他特性

  • 模块与包
  • 数据库的使用
  • 协同程序
  • 错误处理
  • 垃圾回收
  • 文件I/O
  • 协同程序

Lua还有很多用法, 如上述所说。本人在学习redis的过程中看到Lua的用法,故前来简单学习。如果对其他特性感兴趣,请自行学习
Lua的API:
http://www.lua.org/manual/5.3/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值