Lua类对象和类对象的单例

1、Lua的类对象

local myClass = {}

function myClass:new()
	local self = {}
	setmetatable(self,{__index = myClass})
end

local a = 0
local b = 0
local c = 0

return myClass

以上类的对象实例化的调用:

require "myClass"

local _myClass = myClass:new()

实例化后 _myClass.a、_myClass.b、_myClass.c的初始值均为nil

2、Lua的单例

lua的单例的本质其实就是一个全局的字段

myInstanceClass = {}

myInstanceClass_mt = {__index = myInstanceClass}

function myInstanceClass:new()
	local self = {}
	setmetatable(self,myInstanceClass_mt)
end

local a = 0
local b = 0
local c = 0

return myInstanceClass --在使用全局字段的单例中,这句返回值其实可有可无,因为是全局的,所以不需要返回值也能调用。

以上类的对象的调用:

require "myInstanceClass"

local _myInstanceClass1 = myInstanceClass:new()

local _myInstanceClass2 = myInstanceClass:new()

local _myInstanceClass3 = myInstanceClass:new()

实例化后 _myInstanceClass.a、_myInstanceClass.b、_myInstanceClass.c的初始值均为nil

任何时时候以下三个对象之一的值变化的时候_myInstanceClass1 、_myInstanceClass2 、_myInstanceClass3,另外两个对象的值也同时会变化。

原文地址:https://www.cnblogs.com/vsirWaiter/p/7566490.html