Jenerik Diziler
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 60 / 73.
Generics, tablolar işin içine girdiğinde gerçekten kullanışlı hâle gelir. Tür belirtilmiş dizileri zaten {number} veya {string} olarak yazıyorsun. Genel bir işlevin içinde öğe türü basitçe T olabilir ve {T}, “T ne olursa olsun ondan oluşan bir dizi” anlamına gelir.
İşte klasik örnek: herhangi bir dizinin ilk öğesini alma:
local function first<T>(items: {T}): T?
return items[1]
endBir {string} geçirirsen denetleyici T = string olduğunu çıkarır; dolayısıyla sonuç bir string olur. Bir {number} geçirirsen sonuç bir sayıdır. Tek bir işlev, türe özel kopyalardan oluşan koca bir ailenin yerini alır.
Dönüş türüne dikkatlice bak: T değil, T?. Bir dizi boş olabilir ve bu durumda items[1] nil olur: daha önce karşılaştığın isteğe bağlı tür bunu dürüstçe ifade eder: “bir T veya nil”. Denetleyici, sonucu kullanmadan önce çağıranları nil durumunu ele almaya yönlendirir; tür belirtilmiş bir dilden beklediğin hata yakalama tam olarak budur.
Görev
KolayŞunları yapan first adlı genel bir işlev oluştur:
Ttür parametresini bildirir{T}türünde,itemsadlı bir parametre kabul eder- İlk öğeyi, dönüş türü
T?olacak şekilde döndürür (boş bir dizi içinnildeğeridir)
Şu tür belirtilmiş dizileri oluştur:
"apple","banana","cherry"değerlerini içeren,{string}türündefruits10,20,30,40değerlerini içeren,{number}türündescoresfalse,truedeğerlerini içeren,{boolean}türündeflags- Hiç öğe içermeyen,
{string}türündeempty
first işlevini her diziyle, bu sırayla çağırmanın sonucunu yazdır; her biri kendi satırında olsun.
Kendin dene
-- Kodu buraya yaz
-- 1) items[1] döndüren first<T>(items: {T}): T? tanımla
-- 2) fruits: {string}, scores: {number}, flags: {boolean} oluştur,
-- ve boş bir {string} dizi
-- 3) her dizinin first(...) değerini o sırayla yazdır
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'lerKendi başına pratik yap: Online Lua derleyicisi