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.
Görev
Kolayidentity adlı genel bir işlev oluşturun. Bu işlev:
Ttür parametresini bildirirTtüründe,valueadlı bir parametre kabul eder- bu değeri
Tdönüş türüyle döndürür
Ardından işlevinizi kullanarak aşağıdaki tür belirtilmiş değişkenleri oluşturun:
numbertüründeluckyNumber:identity'yi7ile çağırınstringtüründegreeting:identity'yi"Hello, Luau!"ile çağırınbooleantüründeisReady:identity'yitrueile çağırın
Aşağıdakileri her biri kendi satırında olacak şekilde yazdırın:
luckyNumbergreetingisReadyprintiçinde doğrudanidentity'yi"<code>generics" ile çağırmanın sonucuprintiçinde doğrudanidentity'yi99ile ç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
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
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışmak
Parametreleri ve Geri Dönüş Değerlerini TiplendirmeAnonim Fonksiyonları TiplendirmeHiçbir Şey Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriDeğişken Sayıda Parametre Alan Fonksiyonlar (Variadic)Fonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar2Temel Tipler
Temel Tipler: num, str, bool'any' Tipi: Kaçış Yolu'unknown' TipiNil ve İsteğe Bağlı (Optional) TiplerUygulamada Tip ÇıkarımıAçık Tip BelirteçleriÖzet: Temel Tipler Pratiği5Diğer Adlar (Aliases), Birleşimler, Kesişimler
İlkel Tipler için Tip Diğer Adları (Type Aliases)Birleşim Tipleri (Union Types)Birleşim Tipleri ile ÇalışmakLiteral (Sabit) TiplerKesişim Tipleri (Intersection Types)Tip Diğer Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Tipli Tablolar: Diziler ve Map'ler
Tipli DizilerEleman Ekleme ve OkumaMap Tipi Nedir?Map Bildirimi ve Map'lere ErişimTablolar Üzerinde YinelemeKarma Biçimli TablolarÇok Boyutlu Tipli Dizilertable.unpack ve VarargsÖzet: Diziler ve Map'ler6Tablo Biçimlerini Tiplendirme
Satır İçi Biçim AçıklamalarıBiçimler İçin Tip Takma Adlarıİsteğe Bağlı ÖzelliklerBiçimler ve Serbest TablolarBiçimleri GenişletmeBiçimlere Metot EklemeSelf ve İki Nokta MetotlarıÖzet: Tablo Biçimlerini Tanımlama9Jenerikler: İlk Bakış
Jeneriklerin Çözdüğü ProblemJenerik Bir Kimlik (Identity) FonksiyonuJenerik Fonksiyon KullanımıJenerik DizilerJenerik Tip Takma Adları (Type Aliases)Özet: Jenerik FonksiyonlarKendi başına pratik yap: Online Lua derleyicisi