1.打印
print("xxx")
2.注释:--
3.变量,lua 不需要使用“;”
num = 100 全局变量
local num = 100 局部变量
4.方法
function name(parameters1,parameters2)
end
调用:name(parameters)
5.条件语句
if a > b then
print(a)
else
print(b)
end
6.循环
for var=1, 100 do
print(var)
end
7.表:相当于字典
config = {say = "hellow",name="zhangsan",age= 100}
print(config.say)
dic = {}
dic.sex = 0
dic.height = 1.70
print(dic["sex"])
遍历:for key, var in pairs(config) do
print(key,var)
end
pairs()可以遍历整个table,即包括数组及非数组部分。
ipairs()函数用于遍历table中的数组部分。
8.数组:定义同表类事
eg = {1,2,3,"haha"}
数组的key为索引,从1开始
for var=1, 100 do
table.insert(arr1,1,var)//
每次都是从第一个位置开始插入,所以数组元素是100-1
end
数组长度:table.maxn(arr1)
9.面向对象之复制表的方式
People = {}
--People.sayHi = function ()
--print("sayHiTo")
--end
function People.sayHi()
print("sayHiTo")
end
People.sayHi()
10.克隆对象
function People.sayHi()
print("sayHiTo")
end
function clone(tab)
ins = {}
for key, var in pairs(tab) do
ins[key] = var
end
return ins
end
local p = clone(People)
p.sayHi()
11.构造方法
function People.sayHi(self)
print("sayHiTo:"..self.name)
--连接字符串用“..”
end
function clone(tab)
ins = {}
for key, var in pairs(tab) do
ins[key] = var --拷贝值
end
return ins --方法的返回与其他语言有些不同
end
People.new = function (name)
self = clone(People)
self.name = name
return self
end
local p1 = People.new("zhangsan")
for key, var in pairs(p1) do
print(key,var)
end
p1.sayHi(p1)
也可以用:
p1:sayHi(), 这种冒号的方式会默认把调用者当作第一个参数传进来
12.通过复制的方式来继承
13.面向对象之函数闭包的方式
function Person (name)
local self = {}
function init()
self.name = name
end
init()
self.sayHi = function ()
print("sayHiTo:"..self.name)
end
return self
end
local p = Person("zhangsan")
p.sayHi()
复制表的方式要比函数闭包的方式快
--类的继承
function man(name)
local self = Person(name)
self.sayHellow = function ()
print("sayHiHellowTo:"..self.name)
end
return self
end
local m = man("lisi")
m.sayHi()
m.sayHellow()