Menu
Coddy logo textTech

Anonim Fonksiyonları Tiplendirme

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

Lua'da fonksiyonlar değerlerdir — bunları değişkenlerde sakladınız ve diğer yerlere aktardınız: local f = function(x) return x * 2 end. Bu anonim fonksiyonlar (fonksiyon ifadeleri/expressions), tıpkı isimlendirilmiş fonksiyonlar gibi tür açıklamaları alır:

local double = function(x: number): number
    return x * 2
end

local shout = function(text: string): string
    return string.upper(text) .. "!"
end

Parametreler parantez içinde name: type biçiminde belirtilir ve dönüş türü kapanış parantezini takip eder — isimlendirilmiş bir fonksiyondan tek farkı, function anahtar kelimesinin bir isminin olmaması ve tüm ifadenin bir değişkene atanmasıdır.

JavaScript veya TypeScript gördüyseniz, Luau'da ok fonksiyonları (arrow functions) bulunmadığını — yani => sözdiziminin olmadığını unutmayın. Her fonksiyon ifadesi, uzun veya kısa olsun, function ... end ile yazılır.

Atandıktan sonra, ona herhangi bir fonksiyon gibi değişken üzerinden çağrı yaparsınız: double(21) ifadesi 42 döner ve denetleyici her çağrıyı yazdığınız açıklamalara göre doğrular.

challenge icon

Görev

Kolay

Bu adlandırılmış işlevi (named function) tüm tür belirteçlerini (type annotations) koruyarak bir yerel değişkende saklanan bir anonim işleve (anonymous function) dönüştürün:

function subtract(a: number, b: number): number
    return a - b
end

Yani: Aynı parametre ve dönüş türlerine sahip local subtract = function(...) ... end yapısını oluşturun.

Ardından türleri belirtilmiş iki anonim işlev daha oluşturun:

  • createMessagetext: string alır, "Message: [text]" dizesini döndürür (dönüş türü string)
  • isPositivenum: number alır, sayı 0'dan büyükse true, aksi takdirde false döndürür (dönüş türü boolean)

Her biri kendi satırında olacak şekilde çağırın ve yazdırın (print):

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. isPositive(8)

Kendin dene

-- Buraya kod yazın
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- sonra dört sonucu yazdırın
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