Tables - Pitfalls and Bad Habits
Tabloları verimsiz bir şekilde kullanmak o kadar yaygın ki, şikayet etmek yerine bir rehber yayınlıyorum.
Bu rehberi tüm Lua programlama topluluğunda, özellikle yeni başlayanlarla paylaşmaktan çekinmeyin!
Aşağıdaki örnekler gösterildikleri gibi çalışmayabilir. Sadece öğretim amacıyla verilmişlerdir.
Örnek 1
Açıklama: Bu örnek, bazı takımlar tarafından kullanılabilen araç sınıflarını kısıtlar.
Bu örnek, gereksiz döngüler kullanmak verimsiz olduğu için neyin yapılmaması gerektiğini gösterir.
Şimdi table.HasValue'nun her çağrısını bir döngü olarak genişletelim. Bu temel olarak fonksiyonu kendi anlamına çevirir.
table.HasValue kullanarak tablolar üzerinde döngü yaptığınızı şimdi açıkça görüyorsunuz. Durumların %99'unda, bir tablodaki bir değerin varlığını kontrol etmek CPU zamanı israfıdır. Bu yöntemi kullanmak küçük tablolar için çok kötüdür ve büyük tablolar için ise anlamsızdır.
Sıradaki kod, tablolarınızı nasıl verimli hale getireceğinizi gösterir; döngü yok, fonksiyon çağrısı yok! Sadece bir anahtarın varlığına dayanır (asla bir değere değil): anahtarlar bunun için tasarlanmıştır.
Doğrudan bir anahtar kullanarak tablonun içindeki değeri kontrol ediyoruz! Eğer değer true ise anahtar tablodadır, aksi takdirde nil'dir, bu da bir koşulda false'a eşdeğerdir. Bu işlem çok ucuzdur ve buna değer.
Bu örnek, sayı veya metin olan anahtarları içeren tablolar kullanır, ancak bunlar aynı zamanda entity'ler, vector'ler, angle'lar vb. de olabilir.
Aynı Anahtarlar
Ancak bir şeye dikkat edin: nesneler aynı değerlere sahip olabilir ama yine de farklı olabilirler!
Gördüğünüz gibi, bu açılar aynı olmasına rağmen bellekte 2 farklı nesnedirler!
Örneğin, aynı sayılar, metinler ve booleanlar her zaman aynı kabul edilir. Ancak fonksiyonlar, tablolar, Vector'ler, Angle'lar ve NULL Entity'ler bellekte aslında farklıyken aynı gibi görünebilirler.
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord