Menu
Coddy logo textTech

Jenerik Fonksiyon Kullanımı

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 59 / 73.

identity'e T'nin ne olduğunu asla söylemezsiniz — denetleyici bunu kendi kendine çözer. Bu tür çıkarımıdır (type inference): her çağrı noktasında Luau bağımsız değişkene bakar ve T için çözümleme yapar:

local word = identity("Luau")   -- T string olarak çıkarıldı
local count = identity(12)      -- T number olarak çıkarıldı
local flag = identity(false)    -- T boolean olarak çıkarıldı

Her çağrı bağımsızdır — T bir satırda string iken bir sonrakinde number olabilir. Çıkarılan sonuç, elle yazılmış bir tür belirtimi kadar güvenlidir: word, tam otomatik tamamlama ve hata denetimi ile denetleyici için bir string'dir.

TypeScript'ten önemli bir farkı şudur: TS, çağrı noktasında identity<number>(5) ile türü zorlamanıza 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 nedenle Luau açılı ayraçları küçüktür/büyüktür karşılaştırmaları (comparisons) olarak okur ve kod başarısız olur (fails). Türü açıkça belirtmek istediğinizde, bunun yerine değişkeni tür belirtimi ile tanımlayın:

local count: number = identity(12)

Tanıdık bir araçla çıkarımın çalışmasını izleyebilirsiniz: typeof bir değerin çalışma zamanı tür adını döndürür, bu nedenle print(typeof(identity(12))) ifadesi number yazdırır — değer generic fonksiyon üzerinden tamamen değişmeden geçmiştir.

challenge icon

Görev

Kolay

Önceki dersteki jenerik identity fonksiyonu zaten düzenleyicinizde bulunmaktadır. Şimdi bunun çıkarımını (inference) çalıştırın.

Denetleyicinin (checker) T tipini çıkarmasına izin vererek üç değişken oluşturun (tür belirtimine gerek yoktur):

  • wordidentity fonksiyonunu "Luau" ile çağırın
  • countidentity fonksiyonunu 12 ile çağırın
  • flagidentity fonksiyonunu false ile çağırın

Aşağıdakileri, her biri ayrı bir satırda olacak şekilde yazdırın:

  1. word
  2. typeof(word) sonucu
  3. count
  4. typeof(count) sonucu
  5. flag
  6. typeof(flag) sonucu

Kendin dene

-- Önceki dersteki jenerik identity fonksiyonu
local function identity<T>(value: T): T
    return value
end

-- Buraya kod yazın
-- 1) word, count ve flag'i identity çağrılarıyla oluştur (T çıkarılsın)
-- 2) her değeri ardından typeof'u ile yazdır
quiz iconKendini test et

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

Kendi başına pratik yap: Online Lua derleyicisi