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 yapılmış identity fonksiyonu — bir generic function olarak:

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

Fonksiyon adından sonra gelen <T>, bir type parameter bildirir — "her bir çağrıda karar verilen bir tür" anlamına gelen bir yer tutucudur. İmza içerisinde T ifadesini tıpkı gerçek bir tür gibi kullanırsınız: parametre bir T türündedir ve fonksiyon bir T döndürür.

Girdi ve çıktı için aynı T ifadesini kullanmak işin bütün püf noktasıdır — bunları birbirine bağlar. identity("hello") fonksiyonunu çağırın; denetleyici o çağrı için T = string olduğuna karar verir, böylece sonuç bir string olur. identity(42) fonksiyonunu çağırın; T = number olur, böylece sonuç bir number olur. Tek gövde, her tür, hiçbir kayıp yok.

T yalnızca geleneksel bir isimdir ("Type" sözcüğünün kısaltmasıdır) — <Item> veya <Value> da aynı derecede işe yarar. Ve Luau üzerinde her zaman olduğu gibi, açılı ayraçlar yalnızca denetleyici için mevcuttur: çalışma zamanında bu sadece yalın bir Lua fonksiyonudur: function identity(value) return value end.

challenge icon

Görev

Kolay

Şunları gerçekleştiren identity adında generic bir fonksiyon oluşturun:

  • T adında bir tip parametresi bildirsin
  • T tipinde value adında bir parametre kabul etsin
  • T dönüş tipi ile bu değeri geri döndürsün

Ardından fonksiyonunuzu kullanarak şu tiplendirilmiş değişkenleri oluşturun:

  • number tipinde luckyNumber7 değeri ile identity fonksiyonunu çağırın
  • string tipinde greeting"Hello, Luau!" değeri ile identity fonksiyonunu çağırın
  • boolean tipinde isReadytrue değeri ile identity fonksiyonunu çağırın

Her biri ayrı bir satırda olacak şekilde şunları yazdırın:

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

Kendin dene

-- Kodu buraya yaz
-- 1) identity<T>(value: T): T tanımla
-- 2) luckyNumber, greeting ve isReady'i identity çağrılarıyla 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