示栗代碼:
local myClass = { m = 10,n = 11}
function myClass:new()
local self = {}
setmetatable(self,{__index = myClass})
return self
end
local a = 0
local b = 0
local c = 0
myClass.a = 1
myClass.b = 2
myClass.c = 3
a = 4
b = 5
c = 6
d= 7
e = 8
f = 9
print(myClass.a,myClass.b,myClass.c)
print(a,b,c)
return myClass
相對於C#對應的解釋:
帶local的變量a,b,c其實是私有靜態變量。
不帶local的變量d,e,f其實是公有靜態變量。
私有靜態變量驗證方式:
用面象對象寫一個類,然后去實例化一個對象,然后使用這個對象內部的方法調用local變量,你會發現不同的對象里面的local在每次賦值之后都會一樣。
如果要讓對象擁有自己的變量,那么我建議您在元表里面寫變量,那么這樣每個對象產生的變量就會不一樣。
例如以上元表中的
{ m = 10,n = 11}
