ここで、調査するのに十分なほど問題に近いと思われるタイトルを持つ、見つけられる限り多くの回答を調べました。正確な問題を抱えている人を見たことがないので、単純な事実に無知であることを願って質問しています.
HP (int) と距離 (boolean) を記録するテーブルをコーディングし、HP で並べ替えて、Range のものだけを一番上に表示しようとしています。
local tableTest = {
{hp = 64, range = true, name="Frank"},
{hp = 100, range = true, name="Joe"},
{hp = 2, range = false, name="Jim"},
{hp = 76, range = true, name="Tim"},
{hp = 17, range = false, name="Jill"},
{hp = 16, range = true, name="Phillip"},
}
-- Sort by HP and Range to find lowest Unit in Range.
table.sort(tableTest, function(x,y) return x.hp < y.hp and x.range end)
for i=1, #tableTest do print(tableTest[i].name, tableTest[i].hp) end
この出力は次のとおりです。
Phillip 16
Jim 2
Frank 64
Jill 17
Tim 76
Joe 100
これから期待していた出力は次のようになります。
Phillip 16
Frank 64
Tim 76
Joe 100
Jim 2
Jill 17
table.sort がこのような複数のチェックでどのように機能するかについて、これが単なる誤解であることを祈ります (このような変数を宣言する方法に近いと思いました)。
edit
追加情報 -range=false
テーブル内のインデックスの配置順序を変更すると、出力も変更されます (まだ正しくありません)。値は、並べ替え後に別のインデックスに並べ替えられます。