Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Denetleyicinin her çağrıda T türünü belirlemesini sağla.

  1. Fonksiyonun altında, herhangi bir tür açıklaması eklemeden identity("Oslo") sonucunu local city içine ve identity(42) sonucunu local floors içine kaydet.
  2. Önce typeof(city), ardından typeof(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

Kendi başına pratik yap: Online Luau derleyicisi