商业网站建设的目的,wordpress按钮打开外部链接,百度搜索指数排名,网站图标在哪里修改Lua 是一种轻量小巧的脚本语言#xff0c;用标准C语言编写并以源代码形式开放#xff0c; 其设计目的是为了嵌入应用程序中#xff0c;从而为应用程序提供灵活的扩展和定制功能。 因为我们使用redis的时候一般要写lua脚本#xff0c;这篇文章就介绍一下lua脚本语言的基础用… Lua 是一种轻量小巧的脚本语言用标准C语言编写并以源代码形式开放 其设计目的是为了嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。 因为我们使用redis的时候一般要写lua脚本这篇文章就介绍一下lua脚本语言的基础用法。
一、安装Lua
window操作系统下可以使用SciTE来执行lua程序SciTE是一个代码编辑器和集成开发环境类似IntelliJ IDEA。点击以下链接下载SciTE
https://github.com/rjpcomputing/luaforwindows/releases
点击上方链接打开页面点击红框内链接下载SciTE 这是github的链接可能访问很慢或者无法访问可以通过以下网盘链接下载。
下载Luahttps://pan.baidu.com/s/1lsWURBHR2gmFvD0uL6xplw?pwdyxzv安装过程很简单一直下一步就行了注意在安装过程中勾选创建桌面快捷方式。安装后桌面多了一个图标 鼠标双击这个快捷方式打开SciTE第一次打开的时候页面是这样的我们在下面空白的地方输入以下代码
print(Hello world); 然后CtrlS保存当前文件文件名设置成hello.lua为了方便把这个文件保存到桌面 保存之后发现第二排的工具栏图标多了一个运行按钮点击它就可以运行代码了 好了上面已经介绍了SciTE这款代码编辑器的使用接下来介绍lua语言的基础语法。 二、lua基础语法
1、代码注释
lua支持单行注释和多行注释
单行注释的写法
--这是注释
多行注释的写法
--[[
这是多行注释
这是多行注释
这是多行注释
--]] 2、标识符
lua语言的标识符命名规则和其他语言类似
变量名以字母或下划线 _ 开头只能包含字母、数字和下划线。最好不要使用下划线加大写字母的标示符因为Lua的保留字就是这样命名的。一般约定以下划线开头连接一串大写字母的名字比如 _VERSION被保留用于Lua内部的全局变量。 3、关键字
下面是Lua的保留关键字保留关键字不能作为常量或变量或其他用户自定义标示。
andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhilegoto 4、变量的定义
lua中的变量定义不像java要声明类型只需要写变量名变量值在这一点上lua和python是一样的。
全局变量lua中的变量默认是全局的比如
str Hello world;print(str);
局部变量使用local关键字修饰的变量比如
func function()local a 1;
end;print(a);
这个时候a是访问不到的相当于未定义的变量而我们lua是允许访问未定义的变量的只是值为nil类似java的null。 5、变量的赋值
lua中变量的赋值也是用等号但是lua支持一次给多个变量赋值。
例如同时给a、b、c赋值
a, b, c 1, 2, 3;print(a);
print(b);
print(c);
变量和值的顺序一一对应这样的话就有可能变量的个数和值的个数不一致
当变量的个数值的个数时没有赋值的对应变量的值默认为nil这点倒是和java很像当变量的个数值的个数时多余的值会被忽略
注意lua的字符串拼接和java不一样lua使用..来拼接两个字符串。例如
a Hello ;print(a .. world);
因为Lua赋值语句会先计算右边所有的值然后再执行赋值操作所以我们可以这样交换变量的值
a 1;
b 2;a, b b, a;print(a .. a);
print(b .. b); 代码运行结果 6、数据类型
lua中有八大数据类型作为初学者我们能用上的也就只有nil、boolean、string、function、table
数据类型描述nil这个最简单只有值nil属于该类表示一个无效值在条件表达式中相当于false。boolean包含两个值false和true。number数字类型包含整数和小数string字符串由一对双引号或单引号来表示function函数userdata表示任意存储在变量中的C数据结构thread表示执行的独立线路用于执行协同程序tableLua 中的表table其实是一个关联数组associative arrays数组的索引可以是数字、字符串或表类型。在 Lua 里table 的创建是通过构造表达式来完成最简单构造表达式是{}用来创建一个空表。
可以通过type()函数来获取变量的类型例如
a 1;
b abc;
c function()print(这是函数);
end;
d true;
e {name Marry, age 18};print(type(a));
print(type(b));
print(type(c));
print(type(d));
print(type(e));
以上代码的运行结果 6.1 function的说明
函数和变量一样可以指定作用域不指定则默认为全局函数可以使用local关键字设置为局部函数Lua的函数可以接受可变数目的参数在函数的参数列表中使用...表示函数有可变的参数。当参数中有固定参数和可变参数时可变参数要放到最后。
func function(...)for k, v in pairs(...)doprint(v);end;
end;func({a, b, c});
函数可以返回多个值每个值以逗号隔开function可以作为函数的参数传递
func function(a, fun)print(q);fun();
end;func(a, function()print(函数作为参数传递);
end);
6.2 table的介绍 其他4种数据类型很简单主要是介绍一下table这个类似数组又类似对象的数据类型。 table的写法{field value, field2 value2} 当然table可以是一个镶嵌的结构里面的值也可以是一个table
tab {name Tom, age 18, hobby {eat, drink, sleep}}
案例代码 注意table的下标是从1开始的 table里面的字段可以通过两种方式获取
变量名[字段名]变量名.字段名
tab {name Marry, age 18};print(tab[name]);
print(tab.name);
print(tab[age]);
print(tab.age);
代码运行结果 6.3 table的遍历
tab {name Marry, age 18};for k, v in pairs(tab)
doprint(k .. k);print(v .. v);
end; 7、循环结构
for循环
语法格式
for var exp1, exp2, exp3
do -- 循环体
end; 变量var从exp1变化到exp2每次变化以 exp3 为步长递增var并执行一次循环体。 exp3 是可选的如果不指定默认为1。 例如
-- 打印1到10for a 1, 10, 1
doprint(a);
end; 补充泛型for循环 泛型for循环通过迭代器函数pairs()或ipairs()来遍历所有值类似 java 中的 foreach 语句。 Lua 编程语言中泛型 for 循环语法格式:
-- 输出所有水果fruits {apple, banana, pineapple, pear, watermalon, plum, cherry, kiwi fruit, strawberry}for i, v in ipairs(fruits ) doprint(i, v)
end; while循环
语法格式
while(condition)
dostatements
end; do while循环
语法格式
repeatstatements
until(condition); 8、分支结构
if...else语句
if(布尔表达式)
then--[布尔表达式为true时执行该语句块--]else--[布尔表达式为false时执行该语句块--]end;
if...else if...else语句
if(布尔表达式1)
then--[ 在布尔表达式1为true时执行该语句块--]elseif(布尔表达式2)
then--[ 在布尔表达式2为true时执行该语句块--]elseif(布尔表达式3)
then--[在布尔表达式3为true时执行该语句块--]else --[如果以上布尔表达式都不为true则执行该语句块--]end; 9、lua常用函数
print()在控制台输出指定的值该函数可以有多个参数。
print(Hello , world);
string.find()返回匹配串开始和结束的下标如果不存在匹配串返回nil。
start, finish string.find(hello world, hello);print(start, finish); -- 1 5
select(#, ...)获取可变参数的长度
-- 获取参数个数
function getLength(...)return select(#, ...);
end;print(getLength(a, b, c, d, e));
select(n, ...)返回从起点n开始到结束位置的所有参数列表。
print(select(3, a, b, c, d, e)); -- c d e 10、算术运算符
lua相对于java多了一个整除运算符
操作符描述加法-减法*乘法/除法%取余^乘幂-负号//整除运算符(lua5.3) 11、关系运算符
lua相对于java不等于的运算符有一点区别
Java中不等于是!Lua中的不等于是~
操作符描述等于检测两个值是否相等相等返回 true否则返回 false~不等于检测两个值是否相等不相等返回 true否则返回 false大于如果左边的值大于右边的值返回 true否则返回 false小于如果左边的值大于右边的值返回 false否则返回 true大于等于如果左边的值大于等于右边的值返回 true否则返回 false小于等于 如果左边的值小于等于右边的值返回 true否则返回 false 12、逻辑运算符
操作符描述and逻辑与操作符。 若 A 为 false则返回 A否则返回 B。or逻辑或操作符。 若 A 为 true则返回 A否则返回 B。not逻辑非操作符。与逻辑运算结果相反如果条件为 true逻辑非为 false。 13、其他运算符
操作符描述..连接两个字符串#一元运算符返回字符串或表的长度。