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.

Ona hangi değeri verirseniz verin, o değeri olduğu gibi döndüren bir işleve ihtiyacınız olduğunu düşünün: bir özdeşlik işlevi. Şimdiye kadar bildiğiniz türlerle iki seçeneğiniz var ve ikisi de sorunlu.

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

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

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

Her yeni tür, başka bir kopya anlamına gelir ve birinde düzeltilen bir hata, hepsinde düzeltilmelidir. Bu, işlevleri kaçınmak için yazdığınız tekrarın ta kendisidir.

İkinci seçenek: bunları any türüyle yazılmış tek bir işlevde birleştirmek:

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

Artık tek bir işlev her şeyi işliyor, ancak bunun bedelini tür güvenliği ile ödüyorsunuz. echo("hello") çağrısını yaptığınızda denetleyici, sonucun bir dize olduğunu artık bilemez. Yalnızca any olduğunu bilir; bu nedenle otomatik tamamlama devre dışı kalır ve tür hataları gözden kaçar: giren ile çıkan arasındaki bağlantı kaybolur.

Aslında istediğiniz şey, her türle çalışan ve her çağrıda hangi türün kullanıldığını hatırlayan bir işlevdir. Jenerikler tam olarak bunu sağlar ve bu bölümün konusu da budur.

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

Kendi başına pratik yap: Online Lua derleyicisi