1. ホーム
  2. for-loop

[解決済み] Luaのpairs()とipairs()の違いは何ですか?

2022-02-12 12:25:15

質問

forループにおいて、pairs()とipairs()でループすることの違いは何ですか?このページでは両方を使っています。 Luaドキュメント

ipairs()を使用します。

a = {"one", "two", "three"}
for i, v in ipairs(a) do
  print(i, v)
end

結果

1   one
2   two
3   three

pairs()で。

a = {"one", "two", "three"}
for i, v in pairs(a) do
  print(i, v)
end

結果

1   one
2   two
3   three

ここでテストができます。 Luaデモ

解決方法は?

pairs()ipairs() が微妙に違う。

  • pairs() はキーと値のペアを返すもので、主に連想配列のテーブルに使われる。
  • ipairs() はインデックスと値のペアを返し、主に数値表で使用されます。配列中の非数値キーは無視され、インデックスの順序は決定論的(数値順)である。

これを説明するのが、次のコードである。

> u={}
> u[1]="a"
> u[3]="b"
> u[2]="c"
> u[4]="d"
> u["hello"]="world"
> for key,value in ipairs(u) do print(key,value) end
1   a
2   c
3   b
4   d
> for key,value in pairs(u) do print(key,value) end
1   a
hello   world
3   b
2   c
4   d
> 

ご質問のようにキーなしでテーブルを作成した場合、数値配列として動作し、pairsやipairsの動作も同じです。

a = {"one", "two", "three"}

は、以下のものと同等です。 a[1]="one" a[2]="two" a[3]="three"pairs()ipairs() で保証されない順序を除いて)同一になります。 pairs() ).