Jenerik Diziler
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası — ders 60 / 73.
Jenerikler tablolar işin içine girdiğinde gerçekten çok kullanışlı hale gelir. Zaten tür belirtilmiş dizileri {number} veya {string} olarak yazıyorsunuz — jenerik bir fonksiyonun içinde eleman türü sadece T olabilir ve {T}, "T ne olursa olsun onun bir dizisi" anlamına gelir.
İşte klasik örnek — herhangi bir dizinin ilk elemanını getirmek:
local function first<T>(items: {T}): T?
return items[1]
endBir {string} geçirin ve denetleyici T = string çıkarımını yapar, böylece sonuç bir string olur. Bir {number} geçirin ve sonuç bir number olur. Tek bir fonksiyon, türe özel yapılan kopyaların tamamının yerini alır.
Dönüş türüne yakından bakın: T değil, T?'dir. Bir dizi boş olabilir ve bu durumda items[1] değeri nil olur — daha önce karşılaştığınız isteğe bağlı (optional) tür bunu dürüstçe söyler: "bir T veya nil". Denetleyici, sonucu kullanmadan önce çağırıcıları nil durumunu ele almaya yönlendirir; bu da tam olarak tür korumalı bir dilden beklediğiniz hata yakalama özelliğidir.
Görev
KolayŞu işlevleri gerçekleştiren first adında jenerik bir function oluşturun:
- bir
Ttip parametresi bildirir {T}tipindeitemsadında bir parametre kabul ederT?dönüş tipiyle ilk elemanı döndürür (boş birarrayiçinnildeğeridir)
Şu tiplendirilmiş dizileri oluşturun:
"apple","banana","cherry"elemanlarını içeren{string}tipindefruits10,20,30,40elemanlarını içeren{number}tipindescoresfalse,trueelemanlarını içeren{boolean}tipindeflags- hiçbir eleman içermeyen
{string}tipindeempty
Sırasıyla her bir dizi ile first fonksiyonunu çağırmanın sonucunu, her biri ayrı bir satırda olacak şekilde print ile yazdırın.
Kendin dene
-- Kodu buraya yaz
-- 1) first<T>(items: {T}): T? tanımla, items[1] döndürsün
-- 2) fruits: {string}, scores: {number}, flags: {boolean} oluştur,
-- ve boş bir {string} dizisi
-- 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'ler