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ı biliyorTü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.
Görev
Kolayany türünde gelen bir kaydı okuyun.
type User = {id: number, username: string, isActive: boolean}yazın.local user = data :: Userile tür dönüşümü yapan ve`User {user.id}: {user.username} (Active: {user.isActive})`değerini döndürenlocal function describeUser(data: any): stringyazın.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
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışma
Parametreleri ve Dönüş Değerlerini Tür BelirtmeAnonim Fonksiyonları Tür BelirtmeDeğer Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriBoolean Değerler için VarsayılanlarDeğişken Sayıda Parametre Alan FonksiyonlarFonksiyon Türlerini TanımlamaTekrar: Tür Belirtilmiş Fonksiyonlar2Temel Türler
Number, String ve Boolean'any' Türü: Kaçış Yolu'unknown' TürüNil ve İsteğe Bağlı TürlerTür Çıkarımı UygulamadaAçık Tür Ek AçıklamalarıTekrar: Temel Türler Alıştırması5Diğer Adlar (Aliases), Birleşimler, Kesişimler
İlkel Tipler için Tip Diğer Adları (Type Aliases)Birleşim Tipleri (Union Types)Birleşim Tipleri ile ÇalışmakLiteral (Sabit) TiplerKesişim Tipleri (Intersection Types)Tip Diğer Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Türlenmiş Tablolar: Diziler ve Map’ler
Türlenmiş DizilerÖğe Ekleme ve OkumaMap Türü Nedir?Map’leri Tanımlama ve ErişmeTablolar Üzerinde YinelemeKarma Şekilli TablolarBir Izgarayı OkumaBir Izgara Oluşturmatable.unpackÖzet: Diziler ve Map’lerKendi başına pratik yap: Online Luau derleyicisi