2、Lua脚本语言的简单应用

1 篇文章 0 订阅
1 篇文章 0 订阅

一、lua是什么?
轻量级、高效的、可扩展的脚本语言,易于嵌套其他语言,在redis2.6之后支持lua嵌入。它虽然不是面向对象语言,但可以做到面向对象。
二、lua的优缺点
1、减少网络开销
2、原子操作(在执行过程中不能参与其他的操作)
3、功能复用
4、编程式操作数据
三、数据类型
数据类型类型介绍
nil表示空,没赋值,有时也可以用来删除数据a=123;删除a  a=nil
boolean(布尔)true|false
number(数字)表示双精度类型的实浮点数
string(字符串)单引号或者双引号括起来
table(表)lua里面的数组,map和对象,关联数组,索引从1开始{ .....};
table 的索引使用方括号 [];索引可以是字符或数字,表达的意义不一样
function(函数)用来封装某个或某些功能可以返回多个值
userDate(自定义)用来保存C的API
thread(线程)用来区分独立的线程 

变量:
分为全局变量和局部变量(local),默认是全局变量,redis只支持局部变量
变量名是以字母、数字和下划线,数字不能开头,严格区分大小写。不能用关键字命名。
关键字:
andbreakdoelse
elseifendfalsefor
functionifinlocal
nilnotorrepeat
returnthentrueuntil
while


注释和赋值
  1. 注释:
单行注释:是以--开头
多行注释:--[[

--]]
2、赋值
单行赋值:local a=123;
多行赋值:local a,b=123,456;
简单语句
打印语句:
print()
return 返回值;输出文件或者函数的返回值



注释和赋值
  1. 注释:
单行注释:是以--开头
多行注释:--[[

--]]
2、赋值
单行赋值:local a=123;
多行赋值:local a,b=123,456;
简单语句
打印语句:
print()
return 返回值;输出文件或者函数的返回值
操作符:
分类操作符
数字操作符+,-,*,/,%,^
比较运算符==,<;>;<=;>=;~=
逻辑运算符and;or;not
连接操作符..
长度操作符#
四、流程控制
1、if选择控制语句:
if(布尔表达式)
then     
      --[ 布尔表达式为 true 时执行该语句块 --]
else   
      --[ 布尔表达式为 false 时执行该语句块 --]
end

if(布尔表达式)
then   
    --[ 在布尔表达式为 true 时执行的语句 --]
end



if( 布尔表达式 1)
then  
    --[ 在布尔表达式 1 为 true 时执行该语句块 --]elseif( 布尔表达式 2)
then   
    --[ 在布尔表达式 2 为 true 时执行该语句块 --]elseif( 布尔表达式 3)
then   
    --[ 在布尔表达式 3 为 true 时执行该语句块 --]else    
    --[ 如果以上布尔表达式都不为 true 则执行该语句块 --]
end



Lua认为false和nil为假,true 和非nil为真。要注意的是Lua中 0 为 true。


2、循环结构
2.1while循环
while(condition)
do
   statements
end
2.2for循环
2.2.1数值for循环
for var=exp1,exp2[,exp3] 
do <执行体> end

参数介绍:从exp1每隔exp3循环,直到exp2,包含exp1和exp2。有默认步长,如果不指定,步长为1.
2.2.2泛型for循环
for 参数列表  in 迭代器
do  
    <执行体>
end
迭代器:
先介绍下lua提供的两种迭代器:
  • pairs():迭代 table,可以遍历表中所有的 key 可以返回 nil
  • ipairs():迭代数组,不能返回 nil,如果遇到 nil 则退出
自定义迭代器:
function square(iteratorMaxCount,currentNumber)
   if currentNumber<iteratorMaxCount
   then
      currentNumber = currentNumber+1
   return currentNumber, currentNumber*currentNumber
   end
end

for i,n in square,3,0
do
   print(i,n)
end
注意:调用迭代器的方式是:迭代器名,传入参数列表( square,3,0 )。
关于详细的lua迭代器的分类还有一种是用闭包封装:
function elementIterator (collection)
   local index = 0
   local count = #collection
   -- 闭包函数
   return function ()
      index = index + 1
      if index <= count
      then
         --  返回迭代器的当前元素
         return collection[index]
      end
   end
end

for element in elementIterator(array)
do
   print(element)
end
3、repeat...util循环
repeat
   statements
until( condition )
执行过程相当于java中的do...while循环








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值