Menu
Coddy logo textTech

Jeneriklerin Çözdüğü Problem

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası — ders 57 / 73.

Tek yapması gereken, kendisine ilettiğiniz değeri olduğu gibi geri döndürmek olan bir işlev — yani bir özdeşlik (identity) işlevi — gerektiğinizi hayal edin. Şimdiye kadar öğrendiğiniz türlerle iki seçeneğiniz var ve ikisi de sıkıntılıdır.

Birinci seçenek: her tür için ayrı bir kopya yazmak. Gövdeler birebir aynıdır; yalnızca tür açıklamaları farklıdır:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

Her yeni tür, yeni bir kopya demektir ve birinde düzeltilen bir hata hepsinde tek tek düzeltilmelidir. Bu, tam da fonksiyon yazarak kaçınmaya çalıştığınız kod tekrarıdır.

İkinci seçenek: bunları any ile türlendirilmiş tek bir fonksiyonda birleştirmek:

local function echo(value: any): any
    return value
end

Artık tek bir fonksiyon her şeyi halleder — ama bedelini tür güvenliği (type safety) ile ödersiniz. echo("hello") fonksiyonunu çağırdığınızda, checker artık sonucun bir string olduğunu bilemez. Sadece any olduğunu bilir, bu nedenle otomatik tamamlama çalışmaz ve tür hataları gözden kaçar: içeri giren ile dışarı çıkan arasındaki bağlantı kopmuş olur.

Asıl istediğiniz şey, her tür için çalışan ve her çağrıda hangi türün kullanıldığını hatırlayan bir fonksiyondur. İşte jenerikler (generics) size tam olarak bunu sağlar — ve bu bölümün konusudurlar.

Kendin dene

Bu ders bir kod alıştırması içermiyor.

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