续上一篇,lua环境搭建完毕后,我们来了解它的一些基础的方法和语法。


在lua的安装目录下,找到docs目录,里面有一个lua的帮助手册,里面有非常详细的api以及语法方面的记载。


lua 在线工具 lua教程_lua




打开手册后我们点击搜索


lua 在线工具 lua教程_lua 在线工具_02




搜索contents,找到Lua 5.1 Reference Manual - contents


lua 在线工具 lua教程_脚本语言_03




可以看到这里给了非常详细的分类列表,包括Lua中的库方法、提供给C函数调用的api、辅助库等,需要查找的时候会比较方便。


lua 在线工具 lua教程_Lua_04




(1)变量


lua中有8中基础类型,nil(空)、boolean(布尔)、number(数字)、string(字符串)、userdata(自定义类型)、function(函数)、thread(线程)、table(表)。


lua中变量的声明与定义:


lua 在线工具 lua教程_操作符_05


lua 在线工具 lua教程_操作符_06


这两种对变量的定义都是合法的,都会有如下输出,区别在于未使用local关键字声明的变量将会是全局变量,而使用了local关键字声明的变量是局部变量,其余的.lua文件将不能顺利地访问。




上述输出


lua 在线工具 lua教程_Lua_07




(2)表达式


1、%-取模操作符


%是Lua的取模操作符,它是根据a%b == a- floor(a/b)*b的规则来定义的,对于整数来说,这个算式的计算结果的符号永远与第二个参数相同;对于实数,则可能有其他用途,例如,x%1的结果就是x的小数部分,而x-x%1的结果就是其整数部分。类似的,x-x%0.01则是x精确到小数点后两位的结果


lua 在线工具 lua教程_脚本语言_08




输出


lua 在线工具 lua教程_操作符_09


注意c++中是不允许小数%整数的,但是lua中可以




2、^-指数操作符


在lua中,^表示指数操作符而不是异或操作符,注意这点和c++不一样,比如a^0.5表示a的平方根,x^(-1/3)将计算x立方根的倒数


lua 在线工具 lua教程_Lua_10




输出


lua 在线工具 lua教程_脚本语言_11




3、~= 不等操作符(关系运算符)


在lua中用~=表示不等于,比如a不等于b可以用a~=b表示




4、and 、or、not 逻辑操作符


逻辑操作符将false和nil视为假,将其他任何东西都视为真。对于操作符and来说,如果它的得一个操作数为假,就返回第一个操作数;不然返回第二个操作数。对于操作符or来说,如果它的第一个操作数为真,就返回第一个操作数;不然返回第二个操作数。


lua 在线工具 lua教程_lua 在线工具_12




输出


lua 在线工具 lua教程_Lua_13




(3)注释


Lua中使用"--"或"[[ ]]"来注释代码,其中"[[ ]]"是块注释,使用一对匹配的双方括号来界定一个字母字符串。以这种形式书写的字符串可以延伸多行,Lua不会解释其中的转义序列。


lua 在线工具 lua教程_操作符_14




输出


lua 在线工具 lua教程_操作符_15




(4)赋值


Lua的赋值没有太严格的格式要求,使用一个变量都可以不用声明,以下示例的程序都是合法的


lua 在线工具 lua教程_lua 在线工具_16




输出


lua 在线工具 lua教程_lua_17




(5)if else 语句


Lua的if else语句必须要包含then和end这两个关键字,否则会报错(即使只有一个if也需要包含then和end)


lua 在线工具 lua教程_lua 在线工具_18




输出


lua 在线工具 lua教程_Lua_19




(6)循环


lua 在线工具 lua教程_脚本语言_20




输出


lua 在线工具 lua教程_Lua_21




(7)迭代


lua 在线工具 lua教程_lua_22




输出


lua 在线工具 lua教程_lua_23




注意ipairs对于key值为string类型的迭代遍历无效


示例


lua 在线工具 lua教程_lua 在线工具_24




输出


lua 在线工具 lua教程_lua 在线工具_25




pairs对于key值为string类型的遍历仍有效


示例


lua 在线工具 lua教程_Lua_26




输出


lua 在线工具 lua教程_lua_27




(8)数字与字符串的相互转换


数字转字符串


lua 在线工具 lua教程_lua 在线工具_28




输出


lua 在线工具 lua教程_Lua_29




纯数字的字符串转数字


lua 在线工具 lua教程_Lua_30




输出


lua 在线工具 lua教程_lua 在线工具_31




数字和字符串的隐式转换


lua 在线工具 lua教程_Lua_32




输出


lua 在线工具 lua教程_操作符_33




lua 在线工具 lua教程_lua_34




输出


lua 在线工具 lua教程_脚本语言_35


以此类推