Sorunuma yetecek kadar yakın düşünmüş olduğum başlıkların olduğu gibi, buradaki cevapların çoğunu gözden geçirdim. Kesin bir konuya sahip olan birini görmedim, bu yüzden bir soru soruyorum, umarım basit bir gerçeği görmezden gelmekteyim.Lua Tablo Sıralama 2 karşılaştırması
HP (int) ve mesafeyi (boolean) kaydeden bir tabloyu kodlamaya çalışıyorum ve ardından HP'ye göre yalnızca en üstteki Aralıktakiler ile sıralamaya çalışıyorum.
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
Bunun çıktısı:
Phillip 16
Jim 2
Frank 64
Jill 17
Tim 76
Joe 100
ben bundan bekliyordum çıkışı olacaktır:
Phillip 16
Frank 64
Tim 76
Joe 100
Jim 2
Jill 17
Bu sadece nasıl benim açımdan bir yanlış anlama dua table.sort, bunun gibi çoklu kontrollerle çalışır (bunun gibi bir değişkeni nasıl açıkladığınızı varsaydım).
düzenlemek bilgiye - Ben range=false
indeksleri tablosunda neresinde sırasını değiştirirseniz, çıkış değişiklikleri de (hala yanlış). Değerler sıralamadan sonra kendilerini farklı dizinlere ayırır.
ty ty! Sanırım yanlış yaptığımı anladım. Geri dönüşün gerçek anlamda olduğunu düşünüyordum. Yani eğer bunu doğru anlayabilseydim, sadece bu hakkı okuduğumdan emin olmak istiyorum. İlk önce her iki aralığın da doğru olduğunu kontrol ettikten sonra HP'ye göre sıralarız. Eğer her iki aralık doğru değilse, o zaman x'in gerçek bir aralığa sahip olup olmadığını göreceğiz, daha sonra doğruya döneceğiz, aksi takdirde y'nin menzile sahip olup olmadığını ve yanlış döndüğünü göreceğiz. Her ikisi de yanlışsa, HP'nin kapsama alanı dışındakileri sıralarız. Testlerimde başarısızlıkla karşılaştığım yerde yanlış bir getiri vardı. Y değerinin düzgün bir şekilde düzeltilmesine yardımcı olmak için bunu yapıyoruz? – Bubba911
@ Bubba911 Bu durumda, 'x.range'' false' iken 'y.range'' true', bu yüzden '' '' '' '' '' '' '' '' ne olursa olsun '' olmalıdır. –
Ty bunu açıklığa kavuşturmak için :) Aklım hala etrafını sarıyordu. Sözlü olarak her şeyi kendime birkaç kez söyledikten sonra, söylediklerim (gönderdikten sonra). Bu yüzden, benim anlayışımın doğru olduğunu duymak harika bir şey! Tekrar teşekkürler, umarım iyi günler dilerim efendim. – Bubba911