Menu
CoddyTech

Luau'da Enum Deseni

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

Programlar, küçük ve sabit bir kümeden alınan değerlerle doludur: bir sipariş beklemede, kargoya verildi ya da teslim edildi durumundadır; bir oyuncu yukarı, aşağı, sola ya da sağa bakar. Pek çok dilde bunun için bir enum anahtar sözcüğü bulunur. Luau'da böyle bir özellik yoktur ve buna gerek de yoktur; çünkü bu işi zaten sahip olduğunuz iki araç halleder.

Desen 1: sabit tablo. Sıradan bir tablo, anlamlı adları değerlere eşler ve kodun dört bir yanına dağılmış "sihirli sayıları" değiştirir:

local Status = {
    Pending = 1,
    Active = 2,
    Done = 3,
}

print(Status.Active) -- 2

Bu, çalışma zamanında kullanılabilen gerçek bir değerdir: Status.Active değerini okuyabilir, onunla karşılaştırma yapabilir ve tıpkı şimdiye kadar kullandığınız tablolar gibi onu başka yerlere aktarabilirsiniz.

Desen 2: literal birleşimi. Birleşimler bölümünde öğrendiğiniz literal türleri kullanarak oluşturulan, tam string değerlerinden oluşan bir tür:

type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow"    -- ✗ tür hatası

Birleşim yalnızca denetleyici için vardır ve çalışma zamanında hiçbir maliyeti yoktur; ancak bir değişkenin küme dışındaki herhangi bir değeri almasını engeller. Bu iki desen birbirini tamamlar: tablo, tek bir ad altında çalışma zamanı değerleri sunar; birleşim ise derleme zamanında bir garanti sağlar. Bu bölümün ilerleyen kısımlarında, sabit bir tablonun çalışma zamanında değiştirilmesini önleyen table.freeze ile de tanışacaksınız.

challenge icon

Görev

Kolay

Her iki enum desenini yan yana deneyin.

  1. Sabit tablosunu oluşturun: local Speed = {Slow = 8, Fast = 24}.
  2. type Pace = "slow" | "fast" yazın ve local pace: Pace = "fast" tanımlayın.
  3. Önce Speed.Fast, ardından pace değerini yazdırın.

Kodu Çalıştır düğmesine basın: çıktıda 24 ve fast görünür.

Kendin dene

-- 1) Slow = 8 ve Fast = 24 değerlerini içeren sabit bir Speed tablosu
-- 2) type Pace = "slow" | "fast", ardından local pace: Pace = "fast"
-- 3) Önce Speed.Fast, ardından pace değerini yazdır

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

Kendi başına pratik yap: Online Luau derleyicisi