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


示栗代碼:

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}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM