Lua Table元素的刪除


Lua 中的Table元素刪除主要有兩種方法:
1、將字段賦值為 nil
2、使用Table庫里的 table.remove(table, index)

下面着重講解兩種方法

1 table.remove

先來看一下這個庫函數的函數原型:

table.remove(table, pos)

@table:要刪除的表
@pos: 要刪除表元素的位置,這個參數可選,如果不傳的話, 默認為table的長度,即從表最后一個元素刪起

 
 
 
         
  1. local t = {10, 20, 30, 40,50, 60}
  2. table.remove(t, 3)
  3. for k,v in pairs (t) do
  4. print("t", k, v)
  5. end

結果:

可以看到,第3個元素30已經找不到了!
除此之外,還可以看到, 后面的40,50,60分別往前移了一位
由此,千萬記得不要在循環中多次使用table.remove(),如果一定要用,謹慎測試!

2 賦值為 nil

以下面這段代碼為實驗環境

 
 
 
         
  1. local t =
  2. {
  3. [10] = 1,
  4. [20] = 2,
  5. [30] = 3,
  6. [40] = 4,
  7. [50] = 5,
  8. [60] = 6
  9. }

如果用table.remove()的話,pos的位置根本不好找,因為Lua內部非數組排序是根據hash值來的
對於這種pos不好找的表結構,可能賦值為nil相當方便,
假設我要刪除t[30],

只需要

 
 
 
         
  1. t[30] = nil
  2. for k,v in pairs (t) do
  3. print("t", k, v)
  4. end

結果為

可以看到, 已經找不到 t[30],3了

當然,賦值為nil不僅僅只能用來刪除Table的元素,它可以用來刪除任何變量!






免責聲明!

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



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