中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

lua local 變量和表

發布時間:2020-10-02 15:02:17 來源:網絡 閱讀:2324 作者:bosswanghai 欄目:開發技術

local是我們在lua編程里面經常寫的,經常寫的方式為local foo = foo。lua對local的處理有加速訪問的效果,并且將變量定義為局部變量也是一種好的編程習慣。


lua對變量和表的local化處理的方式是不同的

======example======

foo = {}

foo.a =1


do

local foo = foo

foo.a =2

print(foo, _G["foo"])

print(foo.a)

print(_G["foo"].a)

end


print(_G["foo"].a)


print("----next case----")

var = 1

do

local var = var

var = 2

print(var)

print(_G["var"])

end


print(_G["var"])


執行結果:

table: 0x7febca407920 table: 0x7febca407920

2

2

2

----next case----

2

1

1

=============

通過代碼結果可以看到,local表=全局表,是同一個表,這主要是由于lua的表機制是匿名的,相當于函數的指針,local foo = foo,即使本地foo沒有在全局_G注冊,還是引用的是同一個表。當沒有變量指向表的時候,垃圾回收器會銷毀這個匿名表。

而local變量則是創建一個新的變量,遵守子作用域覆蓋父作用域的規則。

特別是對于require "modname"中的模塊,在編寫的時候,不能直接使用全局變量,因為是同一個變會保存其變量狀態影響其他使用。最好的處理方式就是盡可能的依據入參,函數內部定義local 變量等來編寫代碼。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

政和县| 桦南县| 宁明县| 龙口市| 遂平县| 苗栗市| 禄劝| 沁水县| 渭南市| 曲松县| 嘉黎县| 水富县| 小金县| 长垣县| 南陵县| 财经| 横山县| 汉川市| 通化县| 伊金霍洛旗| 旺苍县| 晋城| 九江市| 修文县| 铁岭市| 柘城县| 米林县| 博湖县| 塔河县| 嘉祥县| 伊吾县| 津南区| 鄂托克前旗| 确山县| 自治县| 利川市| 南乐县| 山西省| 浪卡子县| 惠水县| 大石桥市|