Menu
CoddyTech

Tür İddiaları

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

Enums bölümünde, io.read() değerini bir Direction olarak ele almak için :: işlecini bir kez kullandın. Bu derste onu doğru düzgün inceleyeceğiz.

Bazen bir değer hakkında Luau'nun tür denetleyicisinden daha fazla şey bilirsin: Örneğin, türü any olan ama aslında bir kullanıcı kaydı olduğunu bildiğin bir değer. Tür belirtimi (tür dönüştürme olarak da adlandırılır), denetleyiciye "bana güven, bu değeri bu türde kabul et" demeni sağlar. Luau'nun tür dönüştürme işleci :: şeklindedir:

type User = {id: number, username: string}

local raw: any = {id = 42, username = "alice_dev"}
local user = raw :: User
print(user.username) -- tip denetleyicisi artık alanları biliyor

Tür dönüştürme, tür denetleyicisinin inandığı şeyi yalnızca değiştirir. Çalışma zamanında hiçbir şey yapmaz. Bir değeri asla dönüştürmez: "5" :: any hâlâ "5" dizgesidir, 5 sayısı değil (gerçek dönüştürme için tonumber kullan). Ayrıca hiçbir zaman doğrulama yapmaz: yanlış türü belirtirsen tür dönüştürme işleminin kendisi hata vermez. Kodun, mevcut olmayan alanlara eriştiğinde daha sonra yanlış çalışır.

Ne zaman kullanılır: Bir değer any (veya geniş bir birleşim türü) olarak geldiğinde ve yapısını gerçekten bildiğinde. Ne zaman kullanılmaz: Anlamadığın bir tür hatasını susturmak için: hata genellikle gerçek bir hataya işaret eder ve tür dönüştürmeyle onu ortadan kaldırmak yalnızca gizler. Çalışma zamanında doğrulayabildiğinde gerçek denetimleri (örneğin sonraki dersteki typeof korumalarını) tercih et.

challenge icon

Görev

Kolay

any türünde gelen bir kaydı okuyun.

  1. type User = {id: number, username: string, isActive: boolean} yazın.
  2. local user = data :: User ile tür dönüşümü yapan ve `User {user.id}: {user.username} (Active: {user.isActive})` değerini döndüren local function describeUser(data: any): string yazın.
  3. describeUser(rawUser2) değerini yazdırın.

Run Code düğmesine basın: çıktı User 15: bob_admin (Active: false) değerini gösterir.

Kendin dene

-- Program dışından gelen ham kayıtlar: any türünde
local rawUser1: any = {id = 7, username = "nina_dev", isActive = true}
local rawUser2: any = {id = 15, username = "bob_admin", isActive = false}

-- 1) type User = {...}
-- 2) describeUser(data: any): string, :: ile tür dönüşümü
-- 3) describeUser(rawUser2) sonucunu yazdır

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

Kendi başına pratik yap: Online Luau derleyicisi