Lua表格避免间隙

为什么当我使用不同的语法时,lua表格(rehashes?)会避开间隙?

[检查函数](https://github.com/kikito/inspect.lua)

 d = require "core/modules/inspect"

情况1:标准语法,第1个元素是间隙

 t = {1,2,3}
 t [1] = nil
 d(t)
 ________
{ nil, 2, 3 }

情况2:使用括号语法没有间隙

 t = {
    [1] = 1,
    [2] = 2,
    [3] = 3,
 }
 t [2] = nil
 d(t)
 ________
{ 1,
  [3] = 3
}

情况3:动态数组-没有间隙

 t = {}
 t [1] = 1
 t [2] = 2
 t [3] = 3
 t [2] = nil
 d(t)
 ________
{ 1,
  [3] = 3
}

情况4:在第1个元素中设置nil的动态数组-是间隙

 t = {}
 t [1] = 1
 t [2] = 2
 t [3] = 3
 t [1] = nil
 d(t)
 ________
{ nil, 2, 3 }

情况5:使用括号语法在第1个元素中设置nil仍然没有间隙

 t = {
    [1] = 1,
    [2] = 2,
    [3] = 3,
 }
 t [1] = nil
 d(t)
 ________
{
  [2] = 2,
  [3] = 3
}
点赞