인라인 셰이프 어노테이션
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 37번째.
Lua에서는 오랫동안 local user = {name = "Ana", age = 20}과 같이 table을 레코드로 사용해 왔습니다. 필드 이름을 잘못 적거나, 필드를 누락하거나, number가 들어가야 할 곳에 string을 저장하더라도 코드가 실행될 때만 이를 알아차릴 수 있었습니다.
Luau에서는 중괄호 사이에 각 필드와 해당 필드의 type을 나열하여 선언부에서 바로 이러한 table의 shape를 설명할 수 있습니다:
local user: {name: string, age: number} = {
name = "Ana",
age = 20,
}이미 알고 있는 table type들과 비교해 보세요. {number}는 배열을 설명하고 {[string]: number}는 임의의 string 키를 가진 맵을 설명합니다. shape는 더 정확합니다. 각 필드의 이름을 개별적으로 지정하고 모든 필드에 고유한 type을 부여합니다.
shape가 선언되면 편집하는 동안 타입 체커가 table을 해당 shape와 비교하여 검증합니다. 누락된 필드나 잘못된 값 type은 코드가 실행되기 전에 플래그가 지정됩니다:
local user: {name: string, age: number} = {
name = "Ana",
age = "twenty", -- ✗ 타입 오류: string은 number가 아닙니다
}언제나 그렇듯 annotation은 런타임 동작을 추가하지 않습니다. table은 일반적인 Lua table일 뿐입니다. inline shape는 재사용할 계획이 없는 일회성 구조에 완벽하게 어울립니다. 다음 레슨에서는 shape에 이름을 부여하는 방법을 알아봅니다.
챌린지
쉬움다음 인라인 shape annotation을 선언하여 student라는 이름의 변수를 생성하세요:
string타입의namenumber타입의studentIdboolean타입의isEnrolled
name은 "Sarah Johnson", studentId는 12345, isEnrolled는 true로 초기화하세요.
다음 인라인 shape annotation을 선언하여 course라는 이름의 두 번째 변수를 생성하세요:
string타입의titlenumber타입의creditsstring타입의instructor
title은 "Introduction to Luau", credits는 3, instructor는 "Dr. Smith"로 초기화하세요.
각각 별도의 줄에 print 하세요:
student의namestudent의 IDcourse의titlecredits수
직접 해보기
-- 여기에 코드를 작성하세요
-- 1) student를 인라인 shape 어노테이션으로 선언
-- 2) course를 인라인 shape 어노테이션으로 선언
-- 3) 요청된 네 개의 필드를 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.