基本语法
注释
print("script lua win")
-- 单行注释
-- [[
多行注释
]] --
标识符
类似于:java当中 变量、属性名、方法名。
以字母(a-z,A-Z)、下划线 开头,后面加上0个或多个 字母、下划线、数字。
不要用下划线+大写字母,保留字。总结,按照正常思维命名即可。
全局变量
数据类型
nil
没有任何有效值,就是一个 nil。
删除的作用。全局变量和table。
类似于null
type表示数据类型
boolean
false(false\nil都是false), true(其他都为true,包括0)。
number
双精度(8个字节)。
String
字符串用单引号或双引号来表示。
用 [[可以换行的字符串 ]]
字符串和数字进行数学运算,优先将 字符串 转 成 数字。
字符串连接
计算字符串长度
table
类比成java中的数组,map,链表,队列等。
... 是字符串拼接使用的
function
阶乘:
匿名函数:
变量
先声明,后使用。
三种类型:全局变量(默认),局部变量(作用范围:从声明开始,到所在的语句块结束),表中的域
局部变量 local
变量赋值
索引
对table中元素的访问。
tab["key"]
tab.key
循环
用途:做一些有规律的重复操作。
循环体:一组被重复执行的语句。循环条件:判断能否继续循环
while循环
lua
while(循环条件)
do
业务代码;
对循环条件的控制;
end
for循环
数值for循环:
for var=exp1,exp2,exp3 do
循环体
end
var的值,从exp1一直到exp2,步长是exp3(是可选的,默认是1)
泛型for循环:
是通过迭代器进行的。
repeat until
lua
repeat
循环体
until(条件)
先执行循环体,直到满足条件。如果条件为false,继续执行循环体,如果条件为true,则跳出循
环。
流程控制
if()
0 是 true。
函数
函数定义
功能:1。完成指定的任务。2。计算并返回值(可以返回多个值)。例如:print()
函数的范围(local ,缺省)
lua
function 函数名称(参数列表)
函数体;
return 结果
end
多值返回
lua中索引是从1开始的
可变参数
平均数
如何确定可变参数的数量
用#
运算符
算术运算符
+ 加
- 减
* 乘
/ 除
% 取余
^ 乘幂
- 负号
关系运算符
== 等于。
~=不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
逻辑运算符
and
or
not
其他运算符
.. 连接符
# 计算字符串或者 表 的长度。
数组
数组:相同元素的集合。
索引用整数表示:从1开始。
迭代器
泛型 for 迭代器
lua
a = {"a","b","c"}
for k,v in pairs(a)
do
print(k,v)
end
print('----------------')
a = {"a","b","c"}
for k,v in ipairs(a)
do
print(k,v)
end
pairs会遍历所有key和值。
ipairs:只会从1开始,步长是1,中间不是数字作为key的元素会被忽略,一直到第一个不连续的数字索引为止(不含)。适合遍历数组。
for迭代器的结构:
lua
for 变量列表 in 迭代函数 ,状态常量,控制变量
do
循环体
end
table
a = {key1="a",key2="b"}
不能用nil做索引。
模块
模块的定义
从lua5.1开始,引入了模块机制,把一些公用的代码放到文件中,通过api的方式,让其他程序调用,这个文件,就是一个模块。
类似于java中的jar包。
lua中的模块,其实是一个table(由 变量、函数等已知的 lua元素组成)。最好在模块的结尾,需要返回一个table。
如何编写模块
require函数(使用模块)
require("模块名")
require "模块名"