table
table türü, birden fazla değeri depolayabilen bir nesnedir.
Tablo (table) kütüphanesi, tabloları işlemek için fonksiyonlar sağlayan standart bir Lua kütüphanesidir. Garry's Mod'da bu kütüphaneye birkaç ek faydalı fonksiyon eklenmiştir.
Bu kategori, tablo kütüphanesinde bulunan fonksiyonları listeler.
Metotlar
Kaynak tablodaki tüm değerleri hedef tabloya ekler. Bu en çok sıralı tablolar için kullanışlıdır, "sözlük" (dictionary) veya "harita" (map) tipi tablolar için değil. 2 tabloyu birleştirmek istiyorsanız table.Merge'e bakın.
Tek bir değer ekleyen bir fonksiyon için table.insert'e ve bir tablodan diğerine anahtarları miras alan bir fonksiyon için table.Inherit'e bakın.
Tüm anahtarları sıralı tamsayılara dönüştürür. Bu, yeni bir tablo nesnesi oluşturur ve orijinalini etkilemez.
Anahtar-değer (key-value) yapısına sahip bir tabloyu daraltır.
string table.concat( table tbl, string concatenator = "", number startPos = 1, number endPos = #tbl )
Bir tablonun içeriğini birleştirerek bir metin (string) oluşturur.
Derin bir kopya oluşturur ve bu kopyayı döndürür.
Bu fonksiyon çok yavaştır! Tablo yapısını biliyorsanız, kendi kopyalama mekanizmanızı yazmanız daha iyidir. Bu fonksiyon Vector ve Angle gibi kullanıcı verilerini (userdata) KOPYALAMAZ!
Hedef tabloyu boşaltır ve kaynak tablodaki tüm değerleri hedef tabloya birleştirir.
Bir tablodaki anahtar sayısını sayar. Bu, yalnızca bir tablo sayısal ve sıralı olarak dizinlenmediğinde kullanılmalıdır. Bu tür tablolar için uzunluk (#) operatörünü kullanmayı düşünün.
Eğer sadece tablonun boş olup olmadığını test etmek istiyorsanız, çok daha hızlı olduğu için bunun yerine table.IsEmpty kullanın.
table.Sanitise ile temizlenmiş bir tabloyu orijinal formuna geri dönüştürür.
Bir tablodaki tüm değerleri kaldırır. Eğer tablonuz bir metatablo (metatable) değilse, performansı korumak için `tab = {}` kullanmak neredeyse her zaman daha iyidir.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bunun yerine, `ipairs` kullanarak tabloyu yineleyin veya `next` kullanarak önceki indeksten artırın. Sayısal olarak dizinlenmemiş tablolar sıralı değildir.
Bir tabloda belirtilen değerden sonra konumlandırılmış değeri döndürür. Eğer bulunamazsa, tablodaki ilk eleman döndürülür.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bunun yerine, tablonuzu `ipairs` ile yineleyin, önceki değeri saklayın ve hedefi kontrol edin. Sayısal olarak dizinlenmemiş tablolar sıralı değildir.
Bir tabloda belirtilen değerden önce konumlandırılmış değeri döndürür. Eğer bulunamazsa, tablodaki son eleman döndürülür.
Bir tablodaki her elemanın anahtar-değer çiftlerini tersine çevirir, böylece her değer anahtar, her anahtar da değer olur.
Bu fonksiyonu kullanırken dikkatli olun, çünkü bir Lua tablosu aynı anahtarın birden fazla örneğini içeremez. Bu nedenle, yinelenen değerlere sahip tablolarda bu fonksiyonu kullanırken veri kaybı mümkündür.
local test = { test = 1, test2 = 1 }
local f = table.Flip( test )
PrintTable( f )
-- Çıktısı "1 = test2" olur
Verilen tablo var olmasa bile içine bir değer ekler.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bu, Lua 5.1'de kullanımdan kaldırıldı ve 5.2'de kaldırıldı. Bunun yerine `pairs` kullanmalısınız.
Tablodaki her anahtar-değer çifti için yineleme yapar ve çiftin anahtarı ve değeri ile fonksiyonu çağırır. Fonksiyon herhangi bir şey döndürürse, döngü kırılır.
Bunun GLua yorumu `table.ForEach` şeklindedir.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bu, Lua 5.1'de kullanımdan kaldırıldı ve 5.2'de kaldırıldı. Bunun yerine `ipairs()` kullanmalısınız.
Tablodaki her sayısal dizin için sırayla yineleme yapar.
Bu, orijinal Lua uygulamasından miras alınmıştır ve Lua 5.1 itibarıyla kullanımdan kaldırılmıştır; buraya bakın. Bunun yerine `ipairs()` kullanmalısınız.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bunun yerine, ilk anahtarın 1 olmasını bekleyin.
Sayısal olarak dizinlenmemiş tablolar sıralı değildir ve ilk anahtarları yoktur.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bunun yerine, tabloyu 1 anahtarıyla dizinleyin.
Sayısal olarak dizinlenmemiş tablolar sıralı değildir ve ilk anahtarları yoktur.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bunun yerine, uzunluk (#) operatörünün sonucunu kullanın ve sıfır olmadığından emin olun. Sayısal olarak dizinlenmemiş tablolar sıralı değildir ve son anahtarları yoktur.
Verilen tabloda bulunan son anahtarı döndürür.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bunun yerine, tabloyu uzunluk (#) operatörünün sonucuyla dizinleyin ve sıfır olmadığından emin olun. Sayısal olarak dizinlenmemiş tablolar sıralı değildir ve son anahtarları yoktur.
Verilen tabloda bulunan son değeri döndürür.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir.
Bu fonksiyon Lua 5.1'de kullanımdan kaldırıldı ve 5.2'de kaldırıldı. Bunun yerine uzunluk (#) operatörünü kullanın.
Tablonun uzunluğunu döndürür.
Verilen tablodan en yüksek sayısal değere sahip bir anahtar döndürür.
Bir tablonun bir değere sahip olup olmadığını kontrol eder.
Bu fonksiyon büyük tablolar için çok verimsizdir (O(n)) ve muhtemelen her karede (frame) çalışan şeylerde çağrılmamalıdır. Bunun yerine, aşağıdaki 2. örnek gibi bir tablo yapısı düşünün. Ayrıca bakınız: Tablolar: Kötü Alışkanlıklar. Optimizasyon için, kendi oluşturduğunuz bir tablo üzerinde çalışıyorsanız, tabloyu sıralayarak bir değer arayan fonksiyonlara asla ihtiyaç duyulmamalıdır.
Temel (base) tablodan hedef (target) tabloya eksik olan verileri kopyalar ve hedefin BaseClass üyesini temel tablonun işaretçisine ayarlar.
Mevcut değerlerin üzerine yazan ve bir BaseClass üyesi eklemeyen table.Merge'e bakın.
Ayrıca, sadece bir tablonun değerlerini diğerine ekleyen table.Add'e de bakın.
Alt tablolar miras alınmaz. Hedefin tablo değeri öncelikli olacaktır.
Bir tabloya, tablonun sonuna veya belirtilen konuma bir değer ekler.
Bu fonksiyon __newindex metotunu çağırmaz.
Verilen tablonun boş olup olmadığını döndürür.
Bu hem sıralı hem de sıralı olmayan tablolarda çalışır ve sıralı olmayan tablolar için table.Count(tbl) == 0'dan çok daha hızlıdır.
Sıralı tablolar için tab[1] == nil kullanmak daha iyidir.
Tablonun anahtarlarının sıralı olup olmadığını döndürür.
Verilen değeri içeren ilk bulunan anahtarı döndürür.
Verilen değeri içeren anahtarların bir tablosunu döndürür.
Girdi tablosunun, tüm metin (string) anahtarlarının özyinelemeli olarak küçük harfe dönüştürüldüğü bir kopyasını döndürür.
Verilen tablonun her bir alt tablosundan, belirtilen anahtara sahip değerlerin bir dizisini döndürür.
Ayrıca bakınız: table.KeysFromValue.
Bu fonksiyon belirli koşullar altında yığın taşmasına (stack overflow) neden olabilir.
Kaynak tablonun anahtar-değer çiftlerini, hedef tablodaki anahtar-değer çiftleriyle özyinelemeli olarak birleştirir.
Mevcut değerlerin üzerine yazmayan table.Inherit'e bakın.
Ayrıca, sadece bir tablonun değerlerini diğerine ekleyen table.Add'e de bakın.
Elemanları bir tablonun bir bölümünden verilen bir tablonun başka bir bölümüne taşır. Bu, birden çok atamada kaynak tablodan hedef tabloya eleman atamaya benzer.
Bir dizi öğeyi bir tabloya paketler ve yeni tabloyu döndürür. Bu, Lua'nın daha yeni sürümlerindeki table.pack'in alternatif bir uygulaması olarak tasarlanmıştır.
Verilen tablodan rastgele bir değer döndürür.
Bu fonksiyon verilen tablo üzerinde iki kez yineleme yapar, bu nedenle sıralı tablolarla bunun yerine şunu kullanmalısınız:
mytable[ math.random( #mytable ) ]
Bir tablodan bir değeri kaldırır ve boşluğu doldurmak için diğer tüm değerleri aşağı kaydırır.
Eğer indeks 1'den küçük veya #tbl'den büyükse hiçbir şey yapmaz.
Belirtilen tablodan verilen bir değerin ilk örneğini table.remove ile kaldırır, ardından değerin bulunduğu anahtarı döndürür.
Bu fonksiyonun kullanımından kaçının. Tablodaki verilen değerin tüm örneklerini değil, yalnızca ilk bulunanı kaldırır ve sıralı olmayan tablolarla çalışmaz!
Sıralı bir tablonun tersine çevrilmiş bir kopyasını döndürür. Sıralı olmayan ve sayısal olmayan anahtar-değer çiftleri kopyalanmaz.
Vector, Angle ve boolean türlerini, util.TableToKeyValues aracılığıyla anahtar-değerlere (key-values) dönüştürülebilir hale getirir.
table.DeSanitise tam tersi dönüşümü gerçekleştirir.
Tablo üzerinde O(n) zamanda yerinde bir Fisher-Yates karıştırması gerçekleştirir.
Sıralı bir tabloyu artan sırada veya verilen sıralama fonksiyonuna göre sıralar.
Bu fonksiyon verdiğiniz tabloyu değiştirir ve dahili olarak hızlı sıralama (quick sort) algoritmasını kullanır.
Anahtarların değerlerine göre sıralanmış bir anahtar listesi döndürür.
Normal sıralama için table.sort'a bakın.
Bir tabloyu isimlendirilmiş bir üyeye göre sıralar.
Bir tabloyu table.sort'un tersi sırada sıralar.
Bu fonksiyon verdiğiniz tabloyu değiştirir. table.sort gibi, hiçbir şey döndürmez.
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord