Jenerik Fonksiyon Kullanımı
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 63 / 80.
identity'ye T'nin ne olduğunu hiç söylemezsin: denetleyici bunu kendi başına çıkarır. Buna tür çıkarımı denir: Luau, her çağrı noktasında bağımsız değişkene bakar ve T'yi belirler:
local word = identity("Luau") -- T türü string olarak çıkarıldı
local count = identity(12) -- T türü number olarak çıkarıldı
local flag = identity(false) -- T türü boolean olarak çıkarıldıHer çağrı bağımsızdır: T bir satırda string, sonraki satırda number olabilir. Çıkarılan sonuç, elle yazılmış bir tür bildirimindeki kadar güvenlidir: denetleyiciye göre word bir string'dir; otomatik tamamlama ve hata denetimi de eksiksiz çalışır.
TypeScript'ten önemli bir farkı vardır: TS, çağrı noktasında identity<number>(5) ile türü zorla belirtmene izin verir. Luau'da çağrı noktası tür bağımsız değişkenleri yoktur. Bu satır özel bir sözdizimi değildir; bu yüzden Luau açılı ayraçları küçüktür/büyüktür karşılaştırmaları olarak okur ve kod hata verir. Türü açıkça belirtmek istediğinde bunun yerine değişkene tür bildirimi ekle:
local count: number = identity(12)Tanıdık bir araçla tür çıkarımının nasıl çalıştığını görebilirsin: typeof bir değerin çalışma zamanı tür adını döndürür; bu nedenle print(typeof(identity(12))), number yazdırır: değer, genel işlevden tamamen değişmeden geçti.
Görev
KolayDenetleyicinin her çağrıda T türünü belirlemesini sağla.
- Fonksiyonun altında, herhangi bir tür açıklaması eklemeden
identity("Oslo")sonucunulocal cityiçine veidentity(42)sonucunulocal floorsiçine kaydet. - Önce
typeof(city), ardındantypeof(floors)değerini yazdır.
Kodu Çalıştır düğmesine bas: çıktı string ve number gösterir.
Kendin dene
-- Önceki dersteki genel identity fonksiyonu
local function identity<T>(value: T): T
return value
end
-- 1) city ve floors değerlerini identity çağrılarından al, tür belirtimi kullanma
-- 2) Her birinin typeof değerini 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