Lua本身是没有类和对象的概念的,但是呢大多数程序员都习惯了类和对象的这种套路,不好改正。 程序员心里想的应该是:既然Lua你没有类和对象,那我就自己造一个。 接下来我们就用table表来模拟出Lua的类和对象,以及构造方法。 代码如下:

--初始化一个类
Person={name=”asd”,age,sex,address}

–模拟类的构造方法,类与对象核心语句:
function Person:new()
temp={}
–将类[表]设置为temp的元表
setmetatable(temp,Person)
Person.__index=Person
return temp
end

–模拟类中的一个普通方法
function Person:start()
–self关键字,类似C#的this
print(self.name,self.age,self.sex,self.address)
end

–实例化对象
man=Person:new()
man.name=”武建港”
man.age=18
man.sex=”男”
man.address=”中国”

woman=Person:new()
woman.name=”董小姐”
woman.age=18
woman.sex=”女”
woman.address=”美国”

–调用类中的方法
man:start()
woman:start()

–比较两个对象是否用的同一个空间
print(man==woman)

结果如下:

>lua -e “io.stdout:setvbuf ‘no’” “4.lua”
武建港 18 男 中国
董小姐 18 女 美国
false

Exit code: 0

注意点: ①访问对象中的字段:格式是“对象名.字段名” ②访问对象中的方法:格式是“对象名:方法名”(注意是冒号)