您好,登錄后才能下訂單哦!
直入主題
我們要取lua table的長度時習慣這樣
local tb = {1,2,3,4} print(#tb)
這時候,輸出理所當然的是4,如果在程序中我們需要判斷長度時使用這樣的方法,再看一下
tb[1] = nil print(#tb)
輸出還是4,似乎有點背離我們的意愿
我們想知道這個table里面是不是有4個值,但是有一個值被置空了,輸出結果卻沒有及時告訴我們
發生這樣問題的原因是,lua在初始化table的時候,會給這個table分配值存儲的空間,代碼里面tb初始化包含4個數字值,然后對第一個值置空,但是分配出去的空間依然存在。說到這里,已經有人明白了,"#"取的是table分配出的空間,稍稍偏離了實際邏輯的需求,看這樣的代碼
local tb = {nil,nil,nil,nil} print(#tb)
輸出是0
因為lua碰到nil,先不分配空間,所以#tb自然也就是0
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。