요소 추가 및 읽기
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 14번째.
이미 table.insert 및 table.remove를 사용하여 Lua 테이블을 확장하고 축소해 보셨을 것입니다. 둘 다 타입이 지정된 배열에서도 완전히 동일하게 작동합니다. 차이점은 이제 Luau가 삽입하는 항목을 검사한다는 것입니다. {number} 배열에 string을 푸시하면 실행 중에 혼란스러워하는 플레이어가 발견하는 것이 아니라 타이핑하는 동안 즉시 플래그가 지정됩니다.
local queue: {string} = {"save", "load"}
table.insert(queue, "quit") -- 끝에 추가
table.insert(queue, 1, "help") -- 위치 1에 삽입하여 나머지를 이동
local last = table.remove(queue) -- 마지막 요소를 제거하고 반환table.remove(t)는 마지막 요소를 꺼내어 반환합니다. table.remove(t, 1)은 첫 번째 요소를 제거하고 나머지를 모두 아래로 이동시킵니다(down). 배열의 타입이 {string}으로 지정되어 있으므로 Luau는 반환된 값이 string임을 압니다.
읽기는 일반 Lua만큼이나 관대합니다. 아무것도 들어있지 않은 인덱스 — queue[0], queue[-1] 또는 #queue를 벗어난 모든 위치 — 는 에러 없이 조용히 nil로 평가됩니다. 오류가 발생하지 않으므로 존재하는지 확실하지 않은 값을 사용하기 전에 nil인지 확인(check)하세요.
유용한 도구 하나 더: table.freeze(t)는 런타임에 테이블을 읽기 전용으로 만듭니다. 이후에 테이블을 수정하려고 시도하면 에러가 발생합니다. 생성 후 절대 변경되어서는 안 되는 상수 데이터(설정 파일, 고정된 레벨 목록 등)에 대한 Luau의 해법입니다.
챌린지
쉬움"save"와 "load"로 초기화된 타입이 지정된 배열 queue: {string}을 생성합니다. 그런 다음:
table.insert를 사용하여"quit"을 append 하세요- 1번 position 위치에
"help"를 insert 하세요 - 반환된 값을 저장하면서,
table.remove를 사용하여 마지막 command를 remove 하세요
마지막으로 다음 항목을 각각 다른 줄에 print 하세요:
- removed command
- 남아있는 command의 수
- queue의 first command
- 아무것도 없는 슬롯인
queue[10]
직접 해보기
-- 여기에 코드를 작성하세요
-- 1) 큐 선언: {string}에 "save"와 "load"
-- 2) "quit"을 추가하고, 위치 1에 "help"를 삽입
-- 3) 마지막 명령을 제거한 다음, 네 개의 값을 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.