Lua脚本语言学习:
(1)
//输出类型:
--[[print(b);
print(type("hello world"));
print(type(4*4));
print(type(print));
print(type(true));
print(type(nil));
print(type(type(x)));
--]]
--[[print(type(a));
a=10;
print(type(a));
(2)
a="one string";
b=string.gsub(a,"one","another");--gsub为一个替换的函数 表示后面的替换前面
print(a);
print(b);--]]
--[[a='liu peng';
b=string.gsub(a,'liu','peng');--gsub为一个替换的函数 表示后面的替换前面
print(a);
print(b);--]]
(3)
--[[print("10"+1);--转化为数字
print("10+2");--字符串
print("3"*"2");--转化为数字
print(123 ..456);--数字转化为字符串 。。为连接符 --]]
--[[line=io.read(); --读取一行
n=tonumber(line);--将行转化为数字
if n==nil then
error(line .."is not a number");
else
print(n*2);
end--]]
(4)
--[[if tostring(10)=="10" then --将数字转化为字符串
print("my name is lao niu");
print(10 .."10");
else
print("gege");
end--]]
(5)
--[[
--函数调用的实现方法
b=10;
function test()
b=11;--局部变量 或者local b=12; 一般情况下加local,只能在lua文件中使用此变量,在外部无法使用。
print("test");
end
print(b);
test();
--]]
(6)
--[[
function max(a,b)
if(a>b) then--必须有then 否则出错
return a;
else
return b;
end
end
print(max(10,11));
--]]
(7)
--[[
--for语句的使用方法
for i=1,100,2 do --表示1到100之间的数,阶梯为2即:1,3,5,7.。。。。。
print(i);
end
--]]
(8)
--[[
--表的使用
Config={hello="hello lua",age=50} --表示键值对
Config.world="hello world"; --向表中添加一个值
Config.number=100; --向表中添加一个值
print(Config["hello"]);
print(Config.world);
print(Config.number);
--]]
--快速遍历表的实现(1)
days={key="a","b","c","d"} --混合模式的时候,先找不是字母的下标,即key值
for key,value in pairs(days) do
print(key,value);
end
--快速遍历表的实现(2)
news={A="a",B="b",C="c"}
for key,value in pairs(news) do
news.A=nil;
print(value);
end
--快速遍历表的实现(3)
vas={1,2,3,4,5,"hello"}
for key,values in pairs(vas) do
print(key,values);
end
--快速遍历表的实现(4)
arr={}
for var=1,100 do
table.insert( arr,1,var);--相当于栈的存储方式
end
for key,values in pairs(arr) do --pairs遍历键值对的 全部输出
print(key,values); --ipairs遍历下标不为连续整数的就退出
end
--打印数组的数据个数
--方式一:
print(table.maxn(arr));
--方式二:
print(#arr);--打印数组的数据个数
--快速遍历表的实现(5)
tb1={b="hh","aa",v="bb"}
for key,values in ipairs(tb1) do
print(key,values);
end
--[[
--改变attack的数值(会出现问题 全局变量hero改变,会改变输出的数值)
hero={attack=100}
function hero.skill(AddAttack)
hero.attack=hero.attack+AddAttack;
end
hero.skill(20);
print(hero.attack);
--]]
(9)
--[[
--面向对象的使用
--解决传值的问题
hero={attack=100}
--一个函数
function hero.skill(self,AddAttack)
self.attack=self.attack+AddAttack;
end
oneHero=hero;
hero=nil;
oneHero.skill(oneHero,50);
print(oneHero.attack);
--]]
--[[
--面向对象的使用(优化)
--解决传值的问题
hero={attack=100}
--一个函数 self也为隐式的调用
function hero:skill(AddAttack)
self.attack=self.attack+AddAttack;
end
oneHero=hero;
hero=nil;
oneHero:skill(50);
print(oneHero.attack);
--]]
Hero={}
function Hero:new(o)
o=o or{}
setmetatable(o,self);--原表
self.__index=self;--原方法
return o;
end
function Hero:skill(AddAttack)
self.attack=self.attack+AddAttack;
end
oneHero=Hero:new{ attack = 90 }
oneHero:skill(10);
print(oneHero.attack);