Student = {}; Student.__index = Student; function Student:new(name, age) local temp = {}; setmetatable(temp, Student); temp.name = name; temp.age = age; return temp; end function Student:info() print(self.name, self.age);
--运行stu2时会报错 -- print("name:" .. self.name .. " age:" .. self.age); end --输出:stu1 10 stu1 = Student.new(nil, "stu1", 10); stu1:info(); --输出:10 nil stu2 = Student.new("stu2", 10); stu2:info(); --输出:nil stu3 stu3 = Student:new(nil, "stu3", 10); stu3:info(); --输出:stu4 10 stu4 = Student:new("stu4", 10); stu4:info();
Student = {}; Student.__index = Student; --此处做修改 function Student.new(name, age) local temp = {}; setmetatable(temp, Student); temp.name = name; temp.age = age; return temp; end function Student:info() print(self.name, self.age); end --输出:nil stu1 stu1 = Student.new(nil, "stu1", 10); stu1:info(); --输出:stu2 10 stu2 = Student.new("stu2", 10); stu2:info(); --输出:table: 0037B200 nil stu3 = Student:new(nil, "stu3", 10); stu3:info(); --输出:table: 0037B200 stu4 stu4 = Student:new("stu4", 10); stu4:info(); --输出:table: 0084B200 stu5 stu5 = Student:new("stu5"); stu5:info();
--输出:stu6 10
stu6 = Student:new("stu6", 10);
stu6.info(stu6);
Student = {}; Student.__index = Student; function Student.new(name, age) local temp = {}; setmetatable(temp, Student); temp.name = name; temp.age = age; return temp; end function Student:info() print(self.name, self.age); end function Student:message() print(self.name, self.age); end function Student.school() print("go to school!!!"); end --声明类时用点号:Student.new(name, age) stu = Student:new("zhangsan", 10); stu:info(); --输出信息错误 stu.school(); --stu.message(); --报错 stu.message(stu);--输出信息错误 mes = Student.new("zhangsan", 10); --mes.info(); --报错 mes.info(mes); mes.school(); --声明类时用冒号:Student.new(name, age) --stu = Student:new("zhangsan", 10); --stu:info(); --stu.info(stu); --stu.school(); --mes = Student.new(nil, "mes", 20); --mes:message(); --mes.school();
原文:https://www.cnblogs.com/JimLy-BUG/p/5548730.html