Menu
Coddy logo textTech

요소 추가 및 읽기

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

이미 table.inserttable.remove로 Lua 테이블을 늘리고 줄여 보았을 것입니다. 두 함수는 타입이 지정된 배열에서도 완전히 동일하게 작동합니다. 차이점은 이제 Luau가 삽입하는 항목을 검사한다는 것입니다. {number} 배열에 문자열을 넣으면 런타임에 당황한 플레이어가 발견하는 것이 아니라, 입력하는 동안 오류로 표시됩니다.

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)은 첫 번째 항목을 제거한 뒤 나머지를 모두 아래로 이동시킵니다. 배열의 타입이 {string}이므로 Luau는 반환되는 값이 문자열이라는 것을 알고 있습니다.

읽기도 일반 Lua만큼 유연합니다. 아무것도 저장되지 않은 인덱스인 queue[0], queue[-1] 또는 #queue를 넘어서는 인덱스는 조용히 nil로 평가됩니다. 오류가 발생하지 않으므로, 존재하는지 확실하지 않은 값을 사용하기 전에 nil인지 확인하세요.

도구 상자에 하나 더 추가해 보겠습니다. table.freeze(t)는 테이블을 런타임에서 읽기 전용으로 만듭니다. 이후 테이블을 수정하려고 시도하면 오류가 발생합니다. 이는 생성된 후 절대 변경되어서는 안 되는 상수 데이터(구성, 고정된 레벨 목록)에 대한 Luau의 해답입니다.

challenge icon

챌린지

쉬움

queue: {string} 형식의 타입이 지정된 배열을 "save""load"로 초기화하여 만드세요. 그런 다음:

  1. "<code>quit"을 table.insert로 append하세요
  2. position 1에 "<code>help"를 insert하세요
  3. table.removelast command를 remove하고, 반환된 값을 저장하세요

마지막으로 다음 항목을 각각 한 줄에 하나씩 print하세요:

  1. removed command
  2. 남아 있는 command의 개수
  3. queue의 first command
  4. queue[10]: 아무것도 담고 있지 않은 슬롯

직접 해보기

-- 여기에 코드를 작성하세요
-- 1) 큐 선언: {string} "save"와 "load"로
-- 2) 지침의 정확한 텍스트를 추가하고, 위치 1에 지침의 정확한 텍스트를 삽입
-- 3) 마지막 명령을 제거한 다음, 네 개의 값을 출력
quiz icon실력 점검

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

Luau 소개의 모든 레슨

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