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

table table.Add( table target, table source )
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.
table table.ClearKeys( table table, boolean saveKeys = false )
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.
table table.Copy( table originalTable )
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!
table.CopyFromTo( table source, table target )
Hedef tabloyu boşaltır ve kaynak tablodaki tüm değerleri hedef tabloya birleştirir.
number table.Count( table tbl )
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 table.DeSanitise( table tbl )
table.Sanitise ile temizlenmiş bir tabloyu orijinal formuna geri dönüştürür.
table.Empty( table tbl )
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.
any table.FindNext( table tbl, any value )
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.
any table.FindPrev( table tbl, any value )
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.
table table.Flip( table input )
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
table table.ForceInsert( table tab = {}, any value )
Verilen tablo var olmasa bile içine bir değer ekler.
table.foreach( table tbl, function callback )
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.
table.foreachi( table table, function func )
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.
any table.GetFirstKey( table tab )
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.
any table.GetFirstValue( table tab )
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.
table table.GetKeys( table tabl )
Bir tablonun tüm anahtarlarını döndürür.
any table.GetLastKey( table tab )
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.
any table.GetLastValue( table tab )
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.
number table.getn( table tbl )
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.
any table.GetWinningKey( table inputTable )
Verilen tablodan en yüksek sayısal değere sahip bir anahtar döndürür.
boolean table.HasValue( table tbl, any value )
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.
table table.Inherit( table target, table base )
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.
number table.insert( table tbl, number position, any value )
Bir tabloya, tablonun sonuna veya belirtilen konuma bir değer ekler. Bu fonksiyon __newindex metotunu çağırmaz.
boolean table.IsEmpty( table tab )
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.
any table.KeyFromValue( table tab, any value )
Verilen değeri içeren ilk bulunan anahtarı döndürür.
table table.KeysFromValue( table tab, any value )
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.
number table.maxn( table tbl )
En yüksek sayısal anahtarı döndürür.
table table.MemberValuesFromKey( table inputTable, any keyName )
Verilen tablonun her bir alt tablosundan, belirtilen anahtara sahip değerlerin bir dizisini döndürür. Ayrıca bakınız: table.KeysFromValue.
table table.Merge( table destination, table source, boolean forceOverride = false )
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.
table table.move( table sourceTbl, number from, number to, number dest, table destTbl = sourceTbl )
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.
table, number table.Pack( ... )
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.
any, any table.Random( table haystack )
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 ) ]
any table.remove( table tbl, number index = #tbl )
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.
any table.RemoveByValue( table tbl, any val )
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!
table table.Reverse( table tbl )
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.
table table.Sanitise( table tab )
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.
table.Shuffle( table target )
Tablo üzerinde O(n) zamanda yerinde bir Fisher-Yates karıştırması gerçekleştirir.
table.sort( table tbl, function sorter = nil )
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.
table table.SortByKey( table tab, boolean descending = false )
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.
table.SortByMember( table tab, any memberKey, boolean ascending = false )
Bir tabloyu isimlendirilmiş bir üyeye göre sıralar.
table.SortDesc( table tbl )
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.
string table.ToString( table tbl, string displayName, boolean niceFormatting )
Bir tabloyu bir metne (string) dönüştürür.

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord