18

私はまばらなluaテーブルを持っており、それを繰り返す必要があります。問題は、luaが1から反復を開始し、nil値が見つかるとすぐに終了するようです。ここに例があります:

> tab={}
> tab[2]='b'
> tab[5]='e'
> for i,v in ipairs(tab) do print(i,v) end
>               --nothing is output here
> tab[1]='a'
> for i,v in ipairs(tab) do print(i,v) end
1   a
2   b
>               --terminates after 2 (first nil value is tab[3])

目的の出力を取得する方法はありますか?

1   a
2   b
5   e
4

1 に答える 1

35

pairsの代わりに使用する必要がありますipairs

tab={}

tab[1]='a'
tab[2]='b'
tab[5]='e'

for k, v in pairs(tab) do print(k, v) end

(任意の順序で)出力します:

1   a
2   b
5   e

ipairs1から始まり、最初のnilペアで中断する、連続する整数キーを繰り返します。

pairsテーブル内のすべてのキーと値のペアを繰り返します。これは特定の順序で繰り返されることが保証されていないことに注意してください。

于 2012-09-25T13:47:21.067 に答える