1

以下は、単語インデックスを含むテーブルを読み取る lua コードです。これを別のテーブルに読み込んで出力に出力すると、実行されるたびにランダムな順序になります。

earthquakes = {
        date8 = "1992/01/17",
        date7 = "1971/02/09",
        date6 = "2010/04/04",
        date5 = "1987/10/19"
}
sf = string.format
earthquake_num ={}

for k, v in pairs(earthquakes) do
        table.insert(earthquake_num, {key=k,value=v})
end

for i, v in pairs (earthquake_num) do
print(sf(" row %d key = %s", i, v.value))
end

OUTPUT : 毎回異なる順序で

4

3 に答える 3

3

これはLua 5.2.1 の特別な機能です :-)
しかし、この機能は何のために導入されたのでしょうか?
とにかく、関数によって生成された順序付けに頼るべきではありませんpairs


編集:この機能は、Lua を使用している Web サーバーでのハッシュ衝突攻撃
に 対抗するために導入されました。 ランダム化されたハッシュ アルゴリズムにより、等しいハッシュを持つ文字列が簡単に生成されなくなります。 関数によって生成されたテーブル キーの順序は、文字列型のキーの文字列のハッシュに依存するため、プログラムを実行するたびに文字列キーが混同されることがありました。

pairs

于 2013-04-08T07:09:42.910 に答える