Lua脚本语言快速入门手册
学了两天Lua语言,感叹其短小精悍,上手极快,语法还很舒服,不错!整理下学习过程中经常用到的基础知识,共勉!
Lua用法简述
Lua语言是在1993年由巴西一个大学研究小组发明,其设计目标是作为嵌入式程序移植到其他应用程序,它是由C语言实现的,虽然简单小巧但是功能强大,所以许多应用都选用它作为脚本语言,尤其是在游戏领域,例如大名鼎鼎的暴雪公司将Lua语言引入到“魔兽世界”这款游戏中,Rovio公司将Lua语言作为“愤怒的小鸟”这款火爆游戏的关卡升级引擎,Web服务器Nginx将Lua语言作为扩展,增强自身功能。Redis将Lua作为脚本语言可帮助开发者定制自己的Redis命令,在这之前,必须修改源码。在介绍如何在Redis中使用Lua脚本之前,有必要对Lua语言的使用做一个基本的介绍。
Linux 系统上安装
Linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用了5.3.0版本进行安装:
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 OS X 系统上安装
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
接下来我们创建一个 HelloWorld.lua 文件,代码如下:
print("Hello World!")
执行以下命令:
$ lua HelloWorld.lua
输出结果为:
Hello World!
1.数据类型及其逻辑处理
Lua语言提供了如下几种数据类型:booleans(布尔)、numbers(数值)、strings(字符串)、tables(表格),和许多高级语言相比,相对简单。下面将结合例子对Lua的基本数据类型和逻辑处理进行说明。
1.字符串
下面定义一个字符串类型的数据:
local strings val = "world"
其中,local代表val是一个局部变量,如果没有local代表是全局变量。
print函数可以打印出变量的值,例如下面代码将打印world,其中"--"是Lua语言的注释。
-- 结果是"world"
print(hello)
2.数组
在Lua中,如果要使用类似数组的功能,可以用tables类型,下面代码使用定义了一个tables类型的变量myArray,但和大多数编程语言不同的是,Lua的数组下标从1开始计算:
local tables myArray = {"redis", "jedis", true, 88.0}
--true
print(myArray[3])
如果想遍历这个数组,可以使用for和while,这些关键字和许多编程语言是一致的。
for
下面代码会计算1到100的和,关键字for以end作为结束符:
local int sum = 0
for i = 1, 100
dosum = sum + i
end
-- 输出结果为5050
print(sum)
要遍历myArray,首先需要知道tables的长度,只需要在变量前加一个#号即可:
for i = 1, #myArray
do
print(myArray[i])
end
除此之外,Lua还提供了内置函数ipairs,使用for index,value ipairs(tables)可以遍历出所有的索引下标和值:
for index,value in ipairs(myArray)
do
print(index)
print(value)
end
while
下面代码同样会计算1到100的和,只不过使用的是while循环,while循环同样以end作为结束符。
local int sum = 0
local int i = 0
while i <= 100
dosum = sum + ii = i + 1
end
--输出结果为5050
print(sum)
if else
要确定数组中是否包含了jedis,有则打印true,注意if以end结尾,if后紧跟then:
local tables myArray = { "redis", "jedis", true, 88.0 }
for i = 1, #myArray
doif myArray[i] == "jedis"thenprint("true")breakelse--do nothingend
end
3.哈希
如果要使用类似哈希的功能,同样可以使用tables类型,例如下面代码定义了一个tables,每个元素包含了key和value,其中strings1..string2是将两个字符串进行连接:
local tables user_1 = {age = 28, name = "tome"}
--user_1 age is 28
print("user_1 age is " .. user_1["age"])
如果要遍历user_1,可以使用Lua的内置函数pairs:
for key,value in pairs(user_1)
do print(key .. value)
end
2.函数定义
在Lua中,函数以function开头,以end结尾,funcName是函数名,中间部分是函数体:
function funcName()
...
end
contact函数将两个字符串拼接:
function contact(str1, str2)
return str1 .. str2
end
--"hello world"
print(contact("hello ", "world"))
我的其它文章
Lua 教程:菜鸟教程
OpenResty入门之使用Lua开发Nginx插件
Redis进阶之使用Lua脚本自定义Redis命令
SpringBoot通过RedisTemplate执行Lua脚本
转载于:https://www.cnblogs.com/yueshutong/p/10795622.html
Lua脚本语言快速入门手册相关推荐
- JavaScript脚本语言快速入门
目录 一.JavaScript入门 二.事件处理 三.常用对象 四.DOM技术 一.JavaScript入门 什么是JavaScript 一种不需要编译,直接嵌入HTTP页面中的,把静态页面转变成支持 ...
- Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)
http://www.lupaworld.com/action-viewstutorial-itemid-10105.html Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言) 文章来源于htt ...
- 【转】Lua脚本语言入门
Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)(中文)-zt 作者: 沐枫 Lua 程序设计初步 作者: 沐枫 (第二人生成员) 版权所有转载请注明原出处 在这篇文章中,我想向大家介绍如何进行 ...
- (三)Lua脚本语言入门
又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的"艰苦忍耐"式的奋斗,那这是一种很不足的心理状态 ...
- Swift教程Swift语言快速入门(内部资料)
Swift语言快速入门(内部资料) 试读下载地址:http://pan.baidu.com/s/1eQCGRHw 前言Swift教程Swift语言快速入门(内部资料)Swift教程Swift语言快速入 ...
- Swift语言快速入门
Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著 ISBN 978-7-121-24328-8 201 ...
- fceux源码解析_FCEUX金手指加强版 - 使用Lua脚本语言编写FC/NES金手指脚本
一直觉得大部分的FC/NES模拟器的作弊码金手指不是那么方便使用, 比如魂斗罗1代, 玩家的武器可以通过修改0xAA的值来改变: 0x11为M弹(重机枪),0x12为F弹(圈圈),0x13为S弹(散弹 ...
- 转--深入LUA脚本语言,让你彻底明白调试原理
[原创声明] 如果觉得文章不错,请转发.分享给您的朋友 我会把十多年嵌入式开发中的项目实战经验进行总结.分享,相信不会让你失望的! 转载:欢迎转载,但未经作者同意,必须保留此段声明,必须在文章中给出原 ...
- Medusa(美杜莎)和Hydra(九头蛇)快速入门手册:02
本文是Medusa和Hydra快速入门手册的第二部分,第一部分的传送门这两篇也是后续爆破篇的一部分,至于字典,放在最后,后续会把祖传的几十G字典准备好 Hydra入门使用手册 vanHauser Th ...
最新文章
- 互联网技术的主要组成
- 评审不给钱,看论文还要涨价?UCLA:我们决定抵制柳叶刀、细胞
- visual studio xcopy /exclude测试
- redis 持久化详解 RDB和AOF 优缺点
- *【牛客 - 315D】打车(贪心,同优则立证明法)
- 【C语言基础】gdb调试工具的使用
- 事件内核对象 CreateEvent
- 清华大学 TUNA 协会
- case when then else_SQL 优化大神玩转 MySQL函数系列_case_when 的坑
- 2.10 环境变量PATH 2.11 cp命令 2.12 mv命令 2.13 文档查看cat/mor
- Python使用python-snap7实现西门子PLC通讯
- java中的移位运算符<<,>>,>>>
- STM32 直流电机 转速比
- 我们应该怎样来提高自己的编程能力?
- 奋斗吧,程序员——第五十四章 坐拥美人君莫笑,古来征战几人回
- wxid中文是什么_微信号wxid怎么登录?wxid与微信号是什么关系?
- 针对小度在家的设备分析(以1C为例,非破解)
- Linux挂载群晖NFS共享文件夹
- nexus 4 android 5.0,真是亲儿子 Nexus 4可升安卓5.1
- python调用golang dataframe_用Python获取摄像头并实时控制人脸
热门文章
- 性能测试之手机号码python生成方式
- 1+1大于2 联想借东风破浪HPC市场
- 将字符串分解成一个表(多行、多列)表值函数[ StrSplit_Tab]
- java 产生随机数
- mysql中的多行查询结果合并成一个
- PostgreSQL学习手册(七) 事物隔离
- 国有大型企业数据级同城异地灾难备份案例
- C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数或返回值的使用注意事项...
- Panabit 安装笔记之FreeBsd 6.2的安装
- 修改MAC ADDRESS