22 Mart 2015 Pazar

Corona SDK 4.Ders Lua Dilinde Tablolar ve Bellek Yönetimi

  Ahmet Şimşek       22 Mart 2015 Pazar

Bu dersimizde lua dilinde tabloların kullanımını,bellek yönetimini ve modüller ile nasıl çalışacağımızı göreceğiz.

Tablolar(tables)
Tablolar verileri bir dizi şeklinde saklayan nesnelerdir. Oyundaki yada uygulamadaki bazı verileri anlık olarak saklayıp işleme koymak istediğimiz durumlarda kullanılırlar. Örneğin bir karakterimiz olsun ve bu karakterin bir silahı olsun. Karakter her ateş ettiğinde bunu bir tabloya ekleyebilir ve 10 mermiyi geçtiği anda "mermi bitti!" diye uyarı vermesini sağlayıp tablomuzu boşaltabiliriz.

Bir tablo aşağıdaki şekilde oluşturulur.

tablo = {}

Tablomuza veri ekleyelim.

tablo[0] = "ilk deger"
tablo["iki"] = "ikinci deger"
tablo.uc = 3

Tablomuza verilerimizi ekledik. Tablolar içerisinde verileri sadece değer şeklinde taşıyabildikleri gibi anahtar-değer(key-value) şeklindede taşıyabilirler. Bir anahtar belirtilmediği sürece veriler tam sayılar ile saklanır. Yada bir anahtar belirterek verilerin anahtar ile çağrılacak şekilde saklanmasınıda sağlayabiliriz. Tablomuzdan verilerimizi konsol ekranına yazdıralım.

print(tablo[0])
print(tablo["iki"])
print(tablo.uc)

Yukarıdada gördüğünüz gibi arraydaki verileri farklı şekillerde tanımlamak ve erişmek mümkün. İster sayı indisi ile ister kendi belirlemiş olduğunuz indis ile veriye erişebilirsiniz.

table fonksiyonları
table ın hazır sunmuş olduğu fonksiyonlar ile tablolarımızda yapmak istediğimiz bazı işlemleri daha kısa sürede ve daha kolay yapabiliyoruz. Birkaçını burada paylaşacağım ihtiyacınıza göre gerekirse araştırarak kolayca bulabilirsiniz zaten.

1.table.concat
Tablodaki değerleri aralarına istenen bir ekleme yapıp birleştirerek geri döndürür.

örnek :
local a = {"a","h","m","e","t"}
print(table.concat(a,""))
çıktı :
ahmet

2.table.foreach
Tablodaki verileri anahtar ve indis değerleri ile fonksiyon içinde kolayca kullanmayı sağlar.

örnek :
local a = {"a","h","m","e","t"}
print(table.foreach(a,function(anahtar,indis)
   print(anahtar .. " " .. indis)
end))
çıktı :
1 a
2 h
3 m
4 e
5 t

3.table.insert
Tabloya değer eklemeyi sağlar.

örnek :
local a = {}
table.insert(a,"ahmet")
print(a[1])

çıktı :
ahmet

not : Lua dilinde tablo indisleri diğer programlama dillerinin aksine 0 dan değil 1 den başlar.

4.table.remove

örnek :
local a = { "bir","iki","uc" }
table.remove(a,2)
print(a[2])

çıktı :
uc

table da sıranın 1 den başladığını söylemiştik. 2. veri olan iki yi sildiğimizde 2. veri artık uc olacak ve konsolada onun yazıldığını görüyoruz.

5.table.maxn
Tablodaki sayı değeri en yüksek olan veriyi geri döndürür.

örnek :
local a = { 1,2,3,4,5 }
local enbuyuk = table.maxn(a)
print(enbuyuk)

çıktı :
5

Dipnot : Tablodaki veri sayısını bulabilmek için tablo adının önüne # getirmemiz yeterli.

örnek :
local a = { 1,2,3 }
print(#a)

çıktı :
3

Bellek Yönetimi(memory management)
Bellek yönetimi oluşturduğumuz değişkenlerin ve nesnelerin oyundaki işlemi bittikten sonra kullandıkları alanın serbest bırakılmasını sağlar. Yani diğer bir anlamla performans konusunda optimize edilmesini sağlar.

Örneğin bir kutu oluşturalım ve sonra bu kutu nesnemizi sahneden temizleyelim.

örnek :
local kutu = display.newRect(10,10,10,10)
kutu:removeSelf()
display.remove(kutu)
kutu = nil

Kutumuzu oluşturduktan sonra kutu:removeSelf() ile kutuyu sahneden temizledik. display.remove(kutu) da aynı işlevi görür. Daha sonraki bir kullanımda kutuyu tekrar çağırırsak aynı nesneyi dönmemesi adına nil yani null diğer bir deyişle boş değer atadık. Kodu çalıştırdığınızda ekranda nesneyi göremezsiniz bunun nedeni aynı sahnede nesneyi hem oluşturup hem temizlememiz. storyboard modülünü kullanmayı öğrendikten sonra bellek yönetimi fonksiyonlarının asıl kullanım amacını daha iyi öğreneceğiz.

Bu dersimizde tablo kullanımını ve bellek yönetimini yüzeysel olarak gördük. Derslerin daha fazla insana ulaşması adına +1 verip sosyal ağlarda paylaşımda bulunursanız sevinirim. Hertür soru ve önerinizi yorum olarak yazabilirsiniz. Sonraki derste görüşmek üzere.

logoblog

Thanks for reading Corona SDK 4.Ders Lua Dilinde Tablolar ve Bellek Yönetimi

Previous
« Prev Post

Hiç yorum yok:

Yorum Gönder