Menu
Coddy logo textTech

Biçimleri Genişletme

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

İlişkili şekiller genellikle alanları paylaşır. Her Admin aynı zamanda bir User’dır; paylaşılan alanları her iki bildirime de kopyalamak, bunların zamanla birbirinden farklılaşmasına davetiye çıkarır.

Takma adları birleştirirken kesişim operatörü & ile karşılaştınız. Şekiller için de tamamen aynı şekilde çalışır. A & B, "A’daki her şeye ve B’deki her şeye sahiptir" anlamına gelir:

type User = {name: string, age: number}
type Admin = User & {level: number}

-- Admin artık name, age VE level gerektiriyor
local root: Admin = {name = "Root", age = 35, level = 9}

TypeScript arayüzler için ayrı bir extends anahtar sözcüğüne ihtiyaç duyarken Luau’nun yeni bir şeye ihtiyacı yoktur: kesişimler zaten bu işi yapar. Birkaç parçayı zincirleyebilirsiniz:

type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}

& ile | işaretlerini karıştırmayın: bir birleşim olan A | B şekillerden herhangi biridir, oysa bir kesişim olan A & B aynı anda her ikisini de karşılamalıdır. Ayrıca Admin her User alanına sahip olduğundan, bir Admin değeri User beklenen her yerde kullanılabilir.

challenge icon

Görev

Kolay

Şu tür takma adlarını oluştur:

  • Employee: id (number), name (string), department (string)
  • Manager: Employee aracılığıyla & (teamSize) ile genişletilmiş number
  • Contact: email (string)
  • Developer: Employee, Contact ve {yearsExperience: number} türlerinin kesişimi

Şunları oluştur:

  • teamLead türünde Manager: id 101, name "Alice Johnson", department "Engineering", teamSize 8
  • dev türünde Developer: id 102, name "Bob Smith", department "Engineering", email "bob@company.com", yearsExperience 5

Bir getManagerSummary alan ve Manager döndüren [name] manages [teamSize] people adlı bir işlev oluştur.

Her birini ayrı bir satıra yazdır:

  1. getManagerSummary(teamLead) sonucunu
  2. [name] has [yearsExperience] years of experience için dev ifadesini
  3. teamLead'in department değerini
  4. dev'in email değerini

Kendin dene

-- Kodu buraya yaz
-- 1) Employee'yi tanımla, sonra Manager / Contact / Developer'ı & ile
-- 2) teamLead ve dev oluştur
-- 3) getManagerSummary yaz
-- 4) istenen dört satırı yazdır
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

Kendi başına pratik yap: Online Lua derleyicisi