Menu
Coddy logo textTech

Jenerik Bir Kimlik (Identity) Fonksiyonu

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

İşte doğru şekilde, bir jenerik işlev olarak yazılmış özdeşlik işlevi:

local function identity<T>(value: T): T
    return value
end

İşlev adından sonraki <T>, bir tür parametresi tanımlar: “her çağrıda belirlenen herhangi bir türü” temsil eden bir yer tutucu. İmzanın içinde T’yi gerçek bir tür gibi kullanırsın: parametre bir T’dir ve işlev bir T döndürür.

Girdi ve çıktı için aynı T’yi kullanmak bütün püf noktasıdır. İkisini birbirine bağlar. identity("hello") çağrısında denetleyici, bu çağrı için T = string olduğuna karar verir; dolayısıyla sonuç bir string olur. identity(42) çağrısında ise T = number olur ve sonuç bir number olur. Tek bir gövde, her tür, hiçbir şey kaybolmaz.

T yalnızca geleneksel bir addır (“Type” sözcüğünün kısaltması): <Item> veya <Value> de aynı şekilde çalışır. Luau’da her zaman olduğu gibi açılı parantezler yalnızca denetleyici için vardır: çalışma zamanında bu, düz Lua işlevi olan function identity(value) return value end şeklindedir.

challenge icon

Görev

Kolay

identity adlı genel bir işlev oluşturun. Bu işlev:

  • T tür parametresini bildirir
  • T türünde, value adlı bir parametre kabul eder
  • bu değeri T dönüş türüyle döndürür

Ardından işlevinizi kullanarak aşağıdaki tür belirtilmiş değişkenleri oluşturun:

  • number türünde luckyNumber: identity'yi 7 ile çağırın
  • string türünde greeting: identity'yi "Hello, Luau!" ile çağırın
  • boolean türünde isReady: identity'yi true ile çağırın

Aşağıdakileri her biri kendi satırında olacak şekilde yazdırın:

  1. luckyNumber
  2. greeting
  3. isReady
  4. print içinde doğrudan identity'yi "<code>generics" ile çağırmanın sonucu
  5. print içinde doğrudan identity'yi 99 ile çağırmanın sonucu

Kendin dene

-- Kodu buraya yaz
-- 1) identity<T>(value: T): T tanımla
-- 2) identity çağrılarıyla luckyNumber, greeting ve isReady oluştur
-- 3) bunları yazdır, sonra identity(talimatlardaki tam metin) ve identity(99) 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