Lua的next()函数详解

在写Lua代码时,我们常用next()函数判断一个表是否为空,其具体的判断逻辑或许大家并不关心,下面是个人总结的next()函数机制,如有不对欢迎补充修正

next()函数原型:next(table[,index]) 参数1是table;参数2是可选填的索引值,若缺省则为0

该函数总结为:从参数2(index)的后一位开始遍历参数1(table),直到遇到非nil的值则返回两个返回值:返回值1-遇到的值的索引,返回值2-遇到的值;如果遍历完整个表都没遇到非nil的值,则返回nil

下面给出几个例子

例1

Lua的next()函数详解_第1张图片

解释:从索引1后一位索引2开始遍历,遇到的值是nil;然后再遍历下个索引对应的值是30,是非nil值 ,故返回其索引:3,其值:30

例2

Lua的next()函数详解_第2张图片

 解释:从索引4后一位索引5开始遍历,遇到的值是nil,然后再遍历下个索引6对应的值是nil,此时表已经遍历完了都没遇到非nil值,故返回nil

例3

Lua的next()函数详解_第3张图片

  解释:从索引0(参数2缺省)后一位索引1开始遍历,遇到的值是10,故返回对应的索引:1,值:10

所以可以非常容易理解next()传入空表返回nil的原因了

你可能感兴趣的:(Lua,lua,unity)