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