Tôi đã đi qua càng nhiều câu trả lời ở đây vì tôi có thể thấy rằng có tiêu đề tôi xem xét đủ gần với vấn đề của tôi để xem xét. Tôi đã không thấy bất cứ ai có vấn đề chính xác của tôi, vì vậy tôi hỏi một câu hỏi tôi hy vọng chỉ là tôi không biết gì về một thực tế đơn giản.Bảng Lua Phân loại 2 so sánh
Tôi đang cố gắng mã hóa bảng ghi HP (int) và khoảng cách (boolean) và sau đó sắp xếp theo HP chỉ với những cái trong Phạm vi gần đầu.
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
Kết quả của việc này là:
Phillip 16
Jim 2
Frank 64
Jill 17
Tim 76
Joe 100
Kết quả tôi đã mong đợi từ này sẽ là:
Phillip 16
Frank 64
Tim 76
Joe 100
Jim 2
Jill 17
Tôi cầu nguyện này chỉ là một sự hiểu lầm về một phần của tôi như thế nào table.sort làm việc với nhiều kiểm tra như thế này (tôi cho rằng nó gần gũi hơn với cách bạn khai báo một biến như thế này).
chỉnh sửa thông tin bổ sung - Nếu tôi thay đổi thứ tự của nơi range=false
chỉ số đều nằm trong bảng, những thay đổi sản lượng cũng như (vẫn không chính xác). Các giá trị chỉ sắp xếp chúng thành các chỉ mục khác nhau sau khi sắp xếp.
ty ty! Tôi nghĩ rằng tôi hiểu tôi đã làm gì sai. Tôi đã suy nghĩ về sự trở lại của sự thật chỉ. Vì vậy, nếu tôi hiểu điều này đúng, tôi chỉ muốn chắc chắn rằng tôi đang đọc quyền này. Trước tiên, chúng tôi kiểm tra xem cả hai phạm vi có đúng không, sau đó chúng tôi sắp xếp theo HP. Nếu cả hai phạm vi đều không đúng, thì chúng ta sẽ thấy nếu x có một phạm vi đúng, sau đó trả về true, nếu không chúng ta sẽ thấy y có phạm vi và trả về false. Nếu cả hai đều sai, thì chúng ta sẽ sắp xếp những thứ nằm ngoài phạm vi của HP. Trường hợp tôi thất bại trong các bài kiểm tra của tôi là elseif y.range return false. Chúng tôi làm điều này để giúp y giá trị được sắp xếp đúng cách chính xác? – Bubba911
@ Bubba911 Trong trường hợp đó, 'x.range' là' false' trong khi 'y.range' là' true', do đó 'x' phải sau' y' bất kể giá trị của 'hp' là gì. –
Ty để làm rõ điều đó :) Tâm trí tôi vẫn quấn quanh nó. Sau khi bằng lời nói rằng tất cả nó to với bản thân mình một vài lần, những gì bạn nói là những gì tôi đã đưa ra (sau khi gửi bài). Vì vậy, thật tuyệt khi biết rằng sự hiểu biết của tôi là chính xác! Cảm ơn bạn một lần nữa, hy vọng bạn có một ngày tuyệt vời bạn tốt sir. – Bubba911