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ışmanın iki yolu var: Lua'da her zaman kullandığın gevşek yol ve bildirilmiş şekiller. Her birinin sana ne sağladığını görmek için biraz durup düşünmeye değer.
Gevşek bir tablo her şeyi kabul eder. Bu esnekliğin bir bedeli vardır: bir alan adını yanlış yazarsan (user.nmae) sessizce nil elde edersin; bir alanı unutursan hata çok uzakta, çalışma zamanında, boşluğa ilk dokunan kodda ortaya çıkar:
local user = {name = "Ana", age = 20}
print(user.nmae) -- gevşek tablo: sessizce nil yazdırırBir şekil bildirirsen bu hatalar çalışma zamanından düzenleme zamanına taşınır. Denetleyici, yazdığın anda yazım hatasını işaretler, düzenleyicin alan adlarını otomatik tamamlayabilir ve type bildirimi, tablonun neler içerdiğine dair belge görevi de görür:
type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ tip hatası: 'nmae' anahtarı User'da bulunamadıTypeScript'ten geliyorsan Luau'da interface anahtar sözcüğünün olmadığını unutma: type her şekli ele alır. Ayrıca "bildirim birleştirme" de yoktur: aynı kapsamda aynı ada sahip iki tür bildirmek bir hatadır; dolayısıyla her şeklin tam olarak tek bir tanımı vardır.
Luau'nun şekilleri yapısaldır: doğru türlerde doğru alanlara sahip her tablo, nerede veya nasıl oluşturulduğundan bağımsız olarak eşleşir. Gevşek tabloların da hâlâ kullanım alanı vardır: hızlı betiklerin ve gerçekten dinamik verilerin bildirilmiş bir şekle ihtiyacı yoktur. Ancak işlevler arasında aktarılan her şey için bir şekil, hataları hâlâ düzeltmenin ucuz olduğu bir aşamada 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ımlamaKendi başına pratik yap: Online Lua derleyicisi