Jenerik Bir Kimlik (Identity) Fonksiyonu
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 62 / 80.
İşte doğru şekilde yazılmış, jenerik bir fonksiyon olarak özdeşlik fonksiyonu:
local function identity<T>(value: T): T
return value
endFonksiyon adından sonra gelen <T>, bir tür parametresi bildirir: “her çağrıda belirlenen 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 fonksiyon bir T döndürür.
Girdi ve çıktı için aynı T'yi kullanmak işin püf noktasıdır. İkisini birbirine bağlar. identity("hello") çağrısını yap ve denetleyici bu çağrı için T = string olduğuna karar versin; böylece sonuç bir string olur. identity(42) çağrısını yap ve T = number olsun; böylece sonuç bir number olur. Tek bir gövde, her tür, hiçbir şey kaybolmaz.
T yalnızca geleneksel bir addır (“Tür”ün kısaltması): <Item> veya <Value> da aynı şekilde kullanılabilir. Luau'da her zaman olduğu gibi, açılı ayraçlar yalnızca denetleyici içindir: çalışma zamanında bu, sıradan Lua fonksiyonu function identity(value) return value end olur.
Görev
KolayTürünü koruyarak herhangi bir değeri döndüren bir işlev yaz.
local function identity<T>(value: T): Tyaz;valuedeğerini döndürsün.local luckyNumber: number = identity(7)velocal greeting: string = identity("Hello, Luau!")tanımla.- Önce
luckyNumber, sonragreetingdeğerini yazdır.
Kodu Çalıştır düğmesine bas: çıktıda 7 ve Hello, Luau! görünür.
Kendin dene
-- 1) identity<T>(value: T): T
-- 2) identity çağrılarından luckyNumber ve greeting
-- 3) ikisini de yazdır
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ışma
Parametreleri ve Dönüş Değerlerini Tür BelirtmeAnonim Fonksiyonları Tür BelirtmeDeğer Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriBoolean Değerler için VarsayılanlarDeğişken Sayıda Parametre Alan FonksiyonlarFonksiyon Türlerini TanımlamaTekrar: Tür Belirtilmiş Fonksiyonlar2Temel Türler
Number, String ve Boolean'any' Türü: Kaçış Yolu'unknown' TürüNil ve İsteğe Bağlı TürlerTür Çıkarımı UygulamadaAçık Tür Ek AçıklamalarıTekrar: Temel Türler Alıştırması5Diğ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ı3Türlenmiş Tablolar: Diziler ve Map’ler
Türlenmiş DizilerÖğe Ekleme ve OkumaMap Türü Nedir?Map’leri Tanımlama ve ErişmeTablolar Üzerinde YinelemeKarma Şekilli TablolarBir Izgarayı OkumaBir Izgara Oluşturmatable.unpackÖ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 Luau derleyicisi