Luaテーブルの並べ替え、table.sortアプリケーション



Sort Lua Table Table



最近のプロジェクトでは、テーブルの並べ替えに使用しています。私はtable.sortを使用して、キー値の並べ替えテーブルを使用して並べ替えていますが、調査中です。以前はあまり明確ではありませんでした。このメソッドを並べ替えてください。記録するチャンスです。

メソッドのプロトタイプ: table.sort(table、funtion(a、b))



2つのパラメータに:1.table -----------ソートされたテーブル

2.function -------ソート方法、カスタマイズ可能。入力しない場合は、デフォルトの並べ替えを押します。フォームは固定されています、 ソートテーブルvalue1、value2 ....のパラメーターa、b ....(この特定の説明がどのように記述されているかはわかりません)



1.ソート方法を渡さないカスタムを使用します:

結果:



ご覧のとおり、table.sortのデフォルトでは、テーブルに格納されている値が小さいソートから大きいソートまで使用されます。比較テーブルに数値と文字列が含まれている場合、デフォルトの方法を使用すると数値と文字列が報告されることに注意してください。比較ミス。他にもいくつかの落とし穴があります。(デフォルトでは使用量が少ない)場合は注意してください。

2.受信カスタムソート方法:

たとえば、受信テーブルは次のとおりです。

着信メソッドの形式は固定されています。

匿名関数関数(a、b)

........(あなたは気づきます)

終わり

a、bの無名関数には2つのテーブル値が渡され、table.sortは2つの戻り値ごとに比較関数に渡されます。上記の例はt値です。

このような比較関数:

結果は次のとおりです。

関数定義の比較関数は非常に強力ですが、いくつかの落とし穴があります。

注意:

1.table.sortが安定していない、2つの要素が等しい条件の場合、ソートされた相対位置が変わる可能性があります(私自身はまだ表示されていますが、使用量が少ない可能性があります)

2.ソートテーブルの中央要素を必要とする要求にnilを含めることはできません。そうしないと、エラーが発生します。

3.比較時に2つの要素が等しい場合、比較関数はfalseを返し、エラーはtrueを返し、table.sort値は、2つが戻り値に従って元の順序を維持するかどうかを判断します。