Menu
Coddy logo textTech

인터섹션 타입

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 34번째.

유니온은 값이 한 타입 또는 다른 타입이라고 말합니다. 교차 타입은 반대 방향을 가리킵니다. 앰퍼샌드 &는 테이블 형태들을 결합하여 각 부분의 모든 필드를 가진 타입을 만듭니다:

type HasName = { name: string }
type HasAge = { age: number }

type Person = HasName & HasAge

-- Person은 두 필드를 모두 가져야 합니다
local user: Person = {
    name = "Alice",
    age = 25,
}

age를 생략하면 검사기가 불평합니다. 교차는 "그리고"이지, 골라서 선택하는 것이 아닙니다. 이를 통해 작고 재사용 가능한 조각들로 큰 형태를 만들 수 있습니다. 서로 다른 관심사를 위한 집중된 타입을 정의한 다음, 필요할 때 함께 결합하세요:

type HasEmail = { email: string }

type Employee = HasName & HasAge & HasEmail

Luau에서 중요한 점이 하나 있습니다. 기본 타입이 아니라 테이블 형태(및 함수 타입)를 교차하세요. number & string과 같은 것은 동시에 두 타입일 수 있는 값이 없으므로 의미가 없습니다. "이 형태에 저 형태를 더하고 싶을 때" &가 바로 사용할 도구입니다.

물론 런타임에서 Person은 그저 일반적인 Lua 테이블일 뿐입니다. 교차는 검사기를 위해서만 존재합니다.

challenge icon

챌린지

쉬움

두 개의 shape 별칭을 만드세요. name: string 필드를 가진 HasNameage: number 필드를 가진 HasAge입니다.

HasName & HasAge 교집합으로 Person을 만드세요.

email: string 필드를 가진 HasEmail을 만들고, 세 가지 모두의 교집합인 HasName & HasAge & HasEmail으로 Employee를 만드세요.

다음을 선언하세요:

  • 이름이 "Alice"이고 나이가 25user: Person
  • 이름이 "Bob"이고 나이가 30이며 이메일이 "bob@company.com"worker: Employee

"Name: [name], Age: [age]"를 반환하는 displayPerson(person: Person): string"Name: [name], Age: [age], Email: [email]"을 반환하는 displayEmployee(employee: Employee): string을 만드세요.

displayPerson(user)displayEmployee(worker)를 별도의 줄에 출력하세요.

직접 해보기

-- 여기에 코드를 작성하세요
-- type HasName = { name: string }, HasAge, HasEmail
-- type Person = HasName & HasAge
-- type Employee = HasName & HasAge & HasEmail
-- user와 worker를 선언하고, 두 개의 display 함수를 작성하세요,
-- displayPerson(user)와 displayEmployee(worker)를 출력하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Luau 소개의 모든 레슨

직접 연습해 보세요: 온라인 Lua 컴파일러