示栗代碼:
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}