Menu
Coddy logo textTech

Metatable Nedir?

Coddy'nin Lua Journey'sinin Logic & Flow bölümünün bir parçası — ders 16 / 54.

Bir metatable sadece normal bir Lua tablosudur, ancak özel bir amacı vardır. Bir metatable'ı başka bir tabloya (buna "ana" tablo diyelim) bağladığınızda, o ana tablonun üzerinde belirli işlemler gerçekleştirildiğinde nasıl davranacağını değiştirebilirsiniz.

Şöyle düşünün: normalde, + operatörünü kullanarak iki tabloyu birbirine eklemeye çalışırsanız, Lua ne yapacağını bilemez ve size bir hata verir. Ancak bir metatable ile, tablolarınız için toplamanın ne anlama geldiğini tanımlayabilirsiniz. Karşılık gelen değerleri toplamasını, içeriklerini birleştirmesini veya programınız için mantıklı olan başka herhangi bir şeyi yapmasını sağlayabilirsiniz.

Metatablolar, metametotlar adı verilen özel fonksiyonlar tanımlayarak çalışır. Bu metametotların, toplama işlemi için __add veya eksik anahtarları aramak için __index gibi, iki alt çizgi ile başlayan belirli isimleri vardır. Lua, metatablosu olan bir tablo üzerinde bir işlemle karşılaştığında, metatablonun ilgili metametoda sahip olup olmadığını kontrol eder ve ne yapılması gerektiğini belirlemek için onu kullanır.

Bu kavram, kendi davranışlarına sahip özel veri türleri oluşturmak, nesne yönelimli desenleri uygulamak, tabloları istenmeyen değişikliklerden korumak ve çok daha fazlası gibi olasılıkların kapısını açar. Gelecek derslerde, tablolara metatablolar (metatables) eklemeyi ve davranışlarını özelleştirmek için metametotları (metamethods) kullanmayı öğreneceksiniz.

Kopya kağıdı

Bir metatable, belirli işlemler için davranışını değiştirmek üzere başka bir tabloya eklenebilen normal bir Lua tablosudur.

Metatable'lar, adları iki alt çizgi ile başlayan ve metamethod olarak adlandırılan özel fonksiyonlar kullanır:

  • __add - toplama davranışını tanımlar
  • __index - eksik anahtarları arama davranışını tanımlar

Bir metatable'a sahip bir tablo üzerinde bir işlem gerçekleştirildiğinde, Lua ilgili metamethod'u kontrol eder ve davranışı belirlemek için onu kullanır.

Metatable'lar şunları sağlar:

  • Belirli davranışlara sahip özel veri türleri oluşturma
  • Nesne yönelimli desenleri uygulama
  • Tabloları istenmeyen değişikliklerden koruma

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler