Linux系统的Lua下载并安装从官网下载并上传到Linux下载地址解压tar -zxvf lua-5.5.0.tar.gz -C /opt/Lua安装gcc如果有可以跳过执行编译命令make linux test执行安装命令 make install验证是否安装成功 lua -v 查看版本号两种交互模式Lua提供了两种交互模式命令模式和脚本文件模式。命令行模式直接再命令行中输入语句回车就可看到运行结果。先使用lua命令进入lua命令行模式然后输入语句后回车开始运行。lua语句后的分号不强制要求有没有都行。脚本文件模式先创建一个脚本文件hello.lua,编辑内容然后执行lua hello.lua 命令运行脚本两种脚本运行模式脚本文件的运行方式有两种lua命令方式和可执行文件方式。可执行文件方式就是将lua脚本文件修改为可执行文件运行。修改脚本文件内容在脚本文件第一行增加#!/usr/bin/lua表示当前文件使用/usr/bin/lua 命令来运行。修改脚本文件权限为脚本文件赋予可执行权限chmod 755 hello.lua运行./hello.luawindows系统的LuaWindows系统的Lua运行环境最常用的是SciTE。SciTE是一款Lua脚本测试编辑器提供Lua编辑运行环境。除了SciTE还有LuaDist、LuaRocks等。下载地址是Releases · rjpcomputing/luaforwindowsSciTE有两种运行方式命令行反射光hi和Lua脚本的编辑运行环境。Lua语法注释Lua的行注释为两个连续的减号。段注释以--[[开头以--]]结尾。数据类型Lua有以下8种数据类型。通过type()可以查看一个数据的类型比如typenil 的结果为nil标识符Lua的标识符由字母、数字、下划线组成不能以数字开头。Lua大小写敏感。变量Lua是弱类型语言变量无需声明即可使用。变量分为全局变量和局部变量。Lua中的变量默认都是全局变量即使声明在语句块或函数里。局部变量local相当于Java中的private只能在声明的语句块中使用。变量的类型可以随时改变无需声明。运算符算术运算符假设A10 B20其各种运算符的结果如下注意SciTE 仅支持Lua到5.1版本而整除运算符// 需要5.3 版本以上所有当前SciTE 看不到效果在命令行模式中直接输入变量名回车相当于print函数输出该变量。关系运算符逻辑运算符假如AtrueBfalse其他运算符函数Lua中函数以function开头后跟函数名和参数列表以end结尾。可以没有返回值也可以一次返回多个值。function f(a,b) print (a,b) end固定参函数Lua中的函数不要求实参的个数必须与形参的个数相同。如果实参个数小于形参个数剩余的用nil填充。如果实参个数大于形参个数多余的会被系统忽略。可变参函数函数定义时不给出具体形参的个数而是使用三个连续的点号。函数调用时可以传递任意个数的参数函数会全部接收。function f(...) local a,b,c,d... print(a,b,c,d) -- 输出前4个参数 print(...) -- 输出所有参数 end返回多个值当函数返回多个值需要有多个变量来同时接收。function f(a,b) local sumab local mula*b return sum,mul end m,nf(3,5) print (m,n) -- 结果为815函数作为参数函数作为参数时可以是已经定义好的普通函数也可以是匿名函数。流程控制语句if语句Lua提供if...then 用于表示条件判断if的判断条件可以是任意表达式。false与nil为假true与非nil作为真即使是0也是真。if的判断条件可以使用小括号也可以不使用。if a0 then print(num 0) else print(num 0) endif嵌套语句if...then...elseif...then...else...end这里的elseif 中间没有空格。if a0 then print(num 0) elseif a0 then print(num 0) else print(num 0) end循环控制语句while...do while中的条件成立就一致循环。repeat...until until中的条件成立就停止循环。repeat print(a) aa-1 until a0数值for这种for循环只用于循环变量为数值型的情况语法格式为for varexp1exp2exp3 do 循环体 endvar为循环遍历exp1为循环初始值exp2为循环结束值exp3为循环步长。步长不写时默认为1。泛型for用于遍历table中的值要与Lua的迭代器联合使用。break提前终止循环。goto跳转到指定标记语句处开始执行。语句标记使用双冒号括起来置于语句前面。goto语句可以用在循环之外。注意Lua5.1 不支持双冒号的语句标记。function f(a) ::flag:: print(a) if a1 then print(hello) aa-1 goto flag end end