--回调方法的写法
--[[function Add(_a,_b,_callback)
--body
sum =_a+_b;
if _callback then
print("进入回调...")
_callback(sum)
end
end
function Callback ( _callbackValue )
-- body
print(_callbackValue)
end
Add(10,20,Callback)
--集合、表结构的访问
pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;
但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key
student={
name="张三",
age=25,
address="成都"
}
for i,v in pairs(student) do
print(i,v)
end
array={1,3,5,7,9}
for i,v in ipairs(array) do
print(i,v)
end
for key,value in pairs(student) do
print(key,value)
end
--混合表的定义
custom_table={
"value6",
key1="value1",
key2="value2",
"value3",
"value4",
"value5",
1,
10,
function ()
-- body
print("方法1")
end
}
--table.insert(表,"值")方法
--table.insert(表,index,"值")方法
table.insert(custom_table,8,"insert value")
print("混合表的输出-----")
for k,v in pairs(custom_table) do
print(k,v)
end
--custom_table[7]()
--链接表
--table.concat(表1,表2)
custom_table2={10,20,30}
custom_table2_concat=table.concat(custom_table2,":" ,1,3)
print(custom_table2_concat)
print(type(custom_table2))
function PrintArray( arr )
-- body
print("数组输出-----")
for k,v in pairs(arr) do
print(v)
end
end
--排序
array_table = {1,89,23,43,10,43}
table.sort(array_table)
PrintArray(array_table)
--复杂排序(自定义排序方法)
array_table={
key1="value1",
key3="value2",
key2="vlaue3",
10,
5,
20
}
table.sort(array_table)
PrintArray(array_table)
Student={
name="张三",
age=25
}
function Student.PrintInfo( ... )
-- body
print("姓名:"..Student.name.." 年龄:"..Student.age)
end
]]
--Student.PrintInfo()
--[[a=Student
Student=nil
a.PrintInfo(a)
]]
--[[function Student:PrintInfo( ... )
-- body
print(self.name..":"..self.age)
end
Student:PrintInfo()
]]
--[[t={ }
meta=getmetatable(t)
print(meta)
local _mt ={name1="name",name2="name2"}
_index=function ( _table,key)
-- body
end
--为一个表添加元表
setmetatable(t,_mt)
meta=getmetatable(t)
print(meta)
print(t.name1)
]]
--[[Student={}
Student.default={
num=0,
name="",
age=20
}
Student._mt={}
Student.new=function (o)
-- body
setmetatable(o,Student._mt)
return o
end
Student._mt.__index=function(table,key)
return Student.default[key]
end
Student._mt.__newindex=function ( )
-- body
print("哈哈哈")
end
stu1=Student.new({name="张三",age=25,num=1})
print(stu1.name)
stu2=Student.new({name="张",num=2})
print(stu2.name,stu2.age)
stu2.address="北京"
print(stu2.address)
]]
--[[Student={
name1="李四",
no=1,
age=25
}
function Student:new ()
-- body
local o ={}
setmetatable(o,self)
self.__index=self
print(self)
return o
end
function Student:PrintInfo( )
-- body
print(self)
print("姓名: "..self.name1.." 年龄: "..self.age)
end
stu1= Student:new()
print(stu1.name1)
print(stu1.age)
stu2 = Student:new ()
stu2.name1="张三"
print(stu1.name1)
print(stu2.name1)
stu1:PrintInfo()
stu2:PrintInfo()
]]
--[[Hero={
name="",
attack=0,
hp=0,
mp=0
}
function Hero:CreatInstance(_name,_atk,_hp,_mp )
-- body
local o={}
setmetatable(o,self)
self.__index=self
self.name=_name
self.attack=_atk
self.hp=_hp
self.mp=_mp
return o
end
function Hero:Attack()
-- body
print(self.name.."开始攻击")
end
h=Hero:CreatInstance("幽鬼",100,250,100)
h:Attack()
print(h.attack)
--Player类继承Hero
Player =Hero:CreatInstance()
function Player:Attack( )
-- body
print("Player_"..self.name.."开始攻击,伤害值为"..self.attack)
end
p1=Player:CreatInstance("player幽鬼",3000,3000,10000)
p1:Attack()
]]