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.

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

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

challenge icon

Görev

Kolay

Şu işlevleri gerçekleştiren first adında jenerik bir function oluşturun:

  • bir T tip parametresi bildirir
  • {T} tipinde items adında bir parametre kabul eder
  • T? dönüş tipiyle ilk elemanı döndürür (boş bir array için nil değeridir)

Şu tiplendirilmiş dizileri oluşturun:

  • "apple", "banana", "cherry" elemanlarını içeren {string} tipinde fruits
  • 10, 20, 30, 40 elemanlarını içeren {number} tipinde scores
  • false, true elemanlarını içeren {boolean} tipinde flags
  • hiçbir eleman içermeyen {string} tipinde empty

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