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ılan identity function — bir generic function olarak:
local function identity<T>(value: T): T
return value
endfunction isminden sonra gelen <T> bir type parametresi bildirir — "her call işleminde karar verilen bir type" anlamına gelen bir yer tutucudur. İmza içinde T ifadesini tıpkı gerçek bir type gibi kullanırsınız: parametre bir T'dir ve function bir T return eder.
Girdi ve çıktı için aynı T kullanmak bütün püf noktasıdır — bu durum them öğelerini birbirine bağlar. identity("hello") call edin ve denetleyici bu call için T = string olduğuna karar verir, böylece result bir string olur. identity(42) call edin ve T = number olur, böylece result bir number olur. One gövde, every type, hiçbir şey kaybolmaz.
T sadece geleneksel bir isimdir ("Type" kısaltması) — <Item> veya <Value> da aynı derecede iyi çalışır. Ve Luau dilinde her zaman olduğu gibi, açılı ayraçlar yalnızca denetleyici içindir: çalışma zamanında bu sadece düz Lua function function identity(value) return value end şeklindedir.
Görev
KolayŞu özelliklere sahip identity adında generic bir fonksiyon oluşturun:
Tadında bir tip parametresi bildirsinTtipindevalueadında bir parametre kabul etsinTdönüş tipiyle, bu değeri geri döndürsün
Ardından fonksiyonunuzu kullanarak şu tiplendirilmiş değişkenleri oluşturun:
numbertipindeluckyNumber—identityfonksiyonunu7ile çağırınstringtipindegreeting—identityfonksiyonunu"Hello, Luau!"ile çağırınbooleantipindeisReady—identityfonksiyonunutrueile çağırın
Aşağıdakileri her biri ayrı bir satırda olacak şekilde yazdırın:
luckyNumbergreetingisReady- doğrudan
printiçindeidentityfonksiyonunu"generics"ile çağırmanın sonucu - doğrudan
printiçindeidentityfonksiyonunu99ile çağırmanı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("generics") 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 Fonksiyonlar