Menu
Coddy logo textTech

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]
end

Bir {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.

challenge icon

Görev

Kolay

Şunları yapan first adlı genel bir işlev oluştur:

  • T tür parametresini bildirir
  • {T} türünde, items adlı bir parametre kabul eder
  • İlk öğeyi, dönüş türü T? olacak şekilde döndürür (boş bir dizi için nil değeridir)

Şu tür belirtilmiş dizileri oluştur:

  • "apple", "banana", "cherry" değerlerini içeren, {string} türünde fruits
  • 10, 20, 30, 40 değerlerini içeren, {number} türünde scores
  • false, true değerlerini içeren, {boolean} türünde flags
  • Hiç öğe içermeyen, {string} türünde empty

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
quiz iconKendini test et

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

Kendi başına pratik yap: Online Lua derleyicisi