Lua中local變量和非local變量的區別
阿新 • • 發佈:2017-10-27
clas 解釋 不同 私有 arp 對象 賦值 自己的 table
示栗代碼:
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}
Lua中local變量和非local變量的區別