目录
为什么学习Lua语言呢?
Lua的语法简单,学习成本低,它可以在多种操作系统和硬件上运行,如Windows、Linux、Android、iOS等
1.初识Lua
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:The Programming Language Lua
它可以应用在多种场合,例如:
- 游戏开发:Lua可以作为游戏的逻辑脚本,实现游戏的功能和交互。Lua可以和C/C++等语言无缝集成,提高开发效率和灵活性。许多知名的游戏,如《魔兽世界》、《愤怒的小鸟》、《植物大战僵尸》等都使用了Lua作为脚本语言。
- 独立应用脚本:Lua可以作为独立的应用程序,执行各种任务和功能。Lua可以调用操作系统的API,实现文件操作、网络通信、图形界面等功能。Lua还可以作为其他应用程序的插件或扩展,增加新的特性和功能。
- Web应用脚本:Lua可以作为Web服务器的脚本语言,处理Web请求和响应,实现动态网页和Web服务。Lua可以和Nginx、Apache等Web服务器集成,提高性能和并发能力。Lua还可以和数据库、缓存等后端服务交互,实现数据的存储和处理。
- 扩展和数据库插件:Lua可以作为扩展和数据库的插件,实现自定义的功能和逻辑。Lua可以和MySQL、Redis等数据库集成,提供更灵活的查询和操作方式。Lua还可以和其他扩展和插件协作,实现更复杂的功能。
- 安全系统:Lua可以作为安全系统的脚本语言,实现入侵检测、防火墙、过滤器等功能。Lua可以和Snort、Suricata等安全工具集成,提供更灵活的规则和策略。Lua还可以和其他安全系统协作,实现更高的安全性。
本文将使用linux来学习Lua
1.1HelloWorld
CentOS7默认已经安装了Lua语言环境,所以可以直接运行Lua代码。
1)在Linux虚拟机的任意目录下,新建一个hello.lua文件
2)添加下面的内容
print("Hello World!")
3)运行
1.2.变量和循环
学习任何语言必然离不开变量,而变量的声明必须先知道数据的类型。
1.2.1.Lua的数据类型
Lua中支持的常见数据类型包括:
另外,Lua提供了type()函数来判断一个变量的数据类型:
1.2.2.声明变量
Lua声明变量的时候无需指定数据类型,而是用local来声明变量为局部变量:
-- 声明字符串,可以用单引号或双引号,
local str = 'hello'
-- 字符串拼接可以使用 ..
local str2 = 'hello' .. 'world'
-- 声明数字
local num = 21
-- 声明布尔类型
local flag = true
Lua中的table类型既可以作为数组,又可以作为Java中的map来使用。数组就是特殊的table,key是数组角标而已:
-- 声明数组 ,key为角标的 table
local arr = {'java', 'python', 'lua'}
-- 声明table,类似java的map
local map = {name='Jack', age=21}
Lua中的数组角标是从1开始,访问的时候与Java中类似:
-- 访问数组,lua数组的角标从1开始
print(arr[1])
Lua中的table可以用key来访问:
-- 访问table
print(map['name'])
print(map.name)
1.2.3.循环
对于table,我们可以利用for循环来遍历。不过数组和普通table遍历略有差异。
遍历数组:
-- 声明数组 key为索引的 table
local arr = {'java', 'python', 'lua'}
-- 遍历数组
for index,value in ipairs(arr) do
print(index, value)
end
遍历普通table
-- 声明map,也就是table
local map = {name='Jack', age=21}
-- 遍历table
for key,value in pairs(map) do
print(key, value)
end
1.3.条件控制、函数
Lua中的条件控制和函数声明与Java类似。
1.3.1.函数
定义函数的语法:
function 函数名( argument1, argument2..., argumentn)
-- 函数体
return 返回值
end
例如,定义一个函数,用来打印数组:
function printArr(arr)
for index, value in ipairs(arr) do
print(value)
end
end
1.3.2.条件控制
类似Java的条件控制,例如if、else语法:
if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end
与java不同,布尔表达式中的逻辑运算是基于英文单词:
1.3.3.案例
需求:自定义一个函数,可以打印table,当参数为nil时,打印错误信息
function printArr(arr)
if not arr then
print('数组不能为空!')
end
for index, value in ipairs(arr) do
print(value)
end
end
制作不易,喜欢可以多多支持,每日分享编程知识