Biçimler ve Serbest Tablolar
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası — ders 40 / 73.
Artık kayıt tablolarıyla çalışmak için iki yolunuz var: Lua'da her zaman kullandığınız loose yol ve deklare edilmiş şekiller (declared shapes). Her birinin size ne kazandırdığını görmek için durup bakmaya değer.
Bir loose table her şeyi kabul eder. Bu esnekliğin bir bedeli vardır: bir alanı yanlış yazarsanız (user.nmae) sessizce nil alırsınız; bir alanı unutursanız hata çok uzakta, çalışma zamanında (runtime), boşluğa ilk dokunan kod neyse orada ortaya çıkar:
local user = {name = "Ana", age = 20}
print(user.nmae) -- loose table: silently prints nilBir şekil deklare ettiğinizde bu hatalar çalışma zamanından düzenleme zamanına (edit time) taşınır. Denetleyici yazım hatasını yazdığınız anda işaretler, düzenleyiciniz alan adlarını otomatik tamamlayabilir ve type deklarasyonu tablonun ne içerdiğinin dokümantasyonu yerine geçer:
type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ type error: key 'nmae' not found in UserTypeScript'ten geliyorsanız, Luau'nun interface anahtar kelimesine sahip olmadığını unutmayın — type her şekli halleder. Ayrıca "declaration merging" (deklarasyon birleştirme) yoktur: aynı kapsamda aynı isimle iki tür deklare etmek bir hatadır (error), bu nedenle her şeklin tam olarak tek bir tanımı vardır.
Luau'nun şekilleri yapısal (structural) niteliktedir: doğru türlerde doğru alanlara sahip herhangi bir tablo, nerede veya nasıl oluşturulmuş olursa olsun eşleşir. Ve loose tabloların da hâlâ yeri vardır — hızlı betikler ve gerçekten dinamik veriler deklare edilmiş bir şekle ihtiyaç duymaz. Ancak fonksiyonlar arasında aktarılan her şey için bir şekil, hataları henüz ucuzken yakalar.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Luau'ya Giriş bölümündeki tüm dersler
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışmak
Parametreleri ve Geri Dönüş Değerlerini TiplendirmeAnonim Fonksiyonları TiplendirmeHiçbir Şey Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriDeğişken Sayıda Parametre Alan Fonksiyonlar (Variadic)Fonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar2Temel Tipler
Temel Tipler: num, str, bool'any' Tipi: Kaçış Yolu'unknown' TipiNil ve İsteğe Bağlı (Optional) TiplerUygulamada Tip ÇıkarımıAçık Tip BelirteçleriÖzet: Temel Tipler Pratiği5Diğer Adlar (Aliases), Birleşimler, Kesişimler
İlkel Tipler için Tip Diğer Adları (Type Aliases)Birleşim Tipleri (Union Types)Birleşim Tipleri ile ÇalışmakLiteral (Sabit) TiplerKesişim Tipleri (Intersection Types)Tip Diğer Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Tipli Tablolar: Diziler ve Map'ler
Tipli DizilerEleman Ekleme ve OkumaMap Tipi Nedir?Map Bildirimi ve Map'lere ErişimTablolar Üzerinde YinelemeKarma Biçimli TablolarÇok Boyutlu Tipli Dizilertable.unpack ve VarargsÖzet: Diziler ve Map'ler6Tablo Biçimlerini Tiplendirme
Satır İçi Biçim AçıklamalarıBiçimler İçin Tip Takma Adlarıİsteğe Bağlı ÖzelliklerBiçimler ve Serbest TablolarBiçimleri GenişletmeBiçimlere Metot EklemeSelf ve İki Nokta MetotlarıÖzet: Tablo Biçimlerini Tanımlama