Menu
CoddyTech

Harfi Birlik Enum'larını Kullanma

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

Değer kümeleri, fonksiyon parametreleri olarak kullanıldıklarında çok işe yarar. Bir parametreyi değer kümesiyle tür belirterek tanımlayın; tür denetleyicisi, fonksiyonun yalnızca geçerli bir üyeyle çağrılmasını garanti eder:

type Direction = "up" | "down" | "left" | "right"

local function move(direction: Direction)
    print(`Moving {direction}...`)
end

move("left")  -- ✓
move("north") -- ✗ tür hatası: Direction değil

Fonksiyonun içinde, üyelerin tümünü eksiksiz biçimde bir if/elseif zinciriyle ele alın. Tür girdiyi dört değerle sınırladığından, üçünü kontrol edip sonuncuyu else ile ele almak tüm olasılıkları kapsar:

local function describe(direction: Direction): string
    if direction == "up" then
        return "Going upward"
    elseif direction == "down" then
        return "Going downward"
    elseif direction == "left" then
        return "Turning left"
    else
        return "Turning right"
    end
end

Bir pürüz var: io.read() gibi dışarıdan gelen dizgeler, tür denetleyicisi kullanıcının ne yazacağını bilemediği için sıradan string türündedir. Luau'nun tür dönüştürme işleci :: bunu çözer: value :: Type, tür denetleyicisine değeri bu türde kabul etmesini söyler. Bu bölümün sonlarına doğru yer alan Tür İddiaları dersi, tür dönüştürmeleri ayrıntılı olarak ele alıyor; şimdilik tek bir satır yeterli:

local direction = io.read() :: Direction

Tür dönüştürme bir kontrolden ziyade bir vaattir; çalışma zamanında girdiyi doğrulayan hiçbir şey yoktur. Üretim kodunda önce doğrulama yapılırdı; burada ise tür belirtilmiş fonksiyonların kullanıcı girdisini sorunsuzca kabul etmesini sağlar.

challenge icon

Görev

Kolay

Oyuncunun yazdığı bir yönü eyleme dönüştür.

  1. type Direction = "up" | "down" | "left" | "right" yaz.
  2. local function getAction(direction: Direction): string yazarak "Climb", "Drop", "Turn left" veya "Turn right" döndür.
  3. local direction = io.read() :: Direction ile oku ve getAction(direction) yazdır.

Run Code düğmesine bas: girdi up olduğunda çıktı olarak Climb görünür.

Kendin dene

-- 1) type Direction
-- 2) getAction(direction: Direction): string
-- 3) local direction = io.read() :: Direction, ardından eylemi yazdır

Luau'ya Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Luau derleyicisi