一、注释
单行注释:–
多行注释:–[[ --]]
二、 输出:print
三、变量定义:local
local x = 100;
print(x);
四、数据类型: number , boolean,string,function,table,nil
type函数:用于查看数据类型
注意:把变量赋值为nil,就是释放内存。
local win = true;
local func = function()
end
local tab={};
print(type(win));
print(type(func));
print(type(tab));
--输出结果:boolean function table
五、运算符
算数运算符: + - * / % = (没有 ++ – +=)
比较运算符:> < >= <=
逻辑运算符:and or not (相当于&& || !)
六、条件语句
if 条件 then
--条件为真执行的代码
end
if 3>2 then
print('成立');
end
七、while循环
输出1~100
local i = 1;
while i<=100 do
print(i);
i = i+1;
end
repeat 相当于 dowhile
输出1~10
local i = 1;
repeat
print(i);
i = i+1;
until i>10 //当i>10停止循环
八、for循环
输出0~100
for i = 1,100 do
print(i);
end
倒序输出0~100·的偶数
for i = 100,1,-2 do
print(i);
end
九、函数
function 函数名字(参数)
end
function printInfo(info)
print(info);
end
--函数的调用
printInfo('函数执行结果');
函数可以作为变量
local printString = printInfo;
printString('函数作为变量');
function printInfo(info)
print(info);
end
function func(callBack)
for i = 1,100 do
if i%10 == 0 then
callBack('整十');
end
end
end
func(printInfo);
--输出:10个整十
十、闭包
function func()
local x = 1;
function func1()
x = x+1;
return x;
end
return func1;
end
local func2 = func();
print(func2());--2
print(func2());--3
print(func2());--4
print(func2());--5
十一、表(键值对) 可以没有键
表里面元素访问 [‘属性’] 或 .属性
local student = {
id = 100,
name='超哥',
grilFriend = '小可爱',
age=1000;
1,
true,
'我爱你'
}
print(student['id']); --输出:100
print(student.id); --输出:100
元素的修改
student.girlFriend = '最可爱的小可爱';
print(student.girlFriend); --输出:最可爱的小可爱
十二、表的遍历
遍历所有
for k,v in pairs(student) do
print(k,v);
end
只遍历数字的索引
for i,v in ipairs(student) do
print(i,v)
end
. 和:的区别
如果参数有self,用.号调用,那么需要显示传入self;
用:调用,则不需要显示传入self指的对象。
local tab = {x=1};
tab.getX = function(self) //self就是tab
return self.x;
end
print(tab:getX()); --输出1
print(tab.getX(tab)); --输出1
十三、模块
另外写一个.lua模块
在lesson.lua中用require来拿到模块
local Module = require('Module');
print(Module.str);
print(Module.getPrivateStr());