1. 程式人生 > >Lua中local變量和非local變量的區別

Lua中local變量和非local變量的區別

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變量的區別