요소 추가 및 읽기
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 14번째.
이미 table.insert와 table.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의 해답입니다.
챌린지
쉬움queue: {string} 형식의 타입이 지정된 배열을 "save" 및 "load"로 초기화하여 만드세요. 그런 다음:
"<code>quit"을table.insert로 append하세요- position 1에
"<code>help"를 insert하세요 table.remove로 last command를 remove하고, 반환된 값을 저장하세요
마지막으로 다음 항목을 각각 한 줄에 하나씩 print하세요:
- removed command
- 남아 있는 command의 개수
- queue의 first command
queue[10]: 아무것도 담고 있지 않은 슬롯
직접 해보기
-- 여기에 코드를 작성하세요
-- 1) 큐 선언: {string} "save"와 "load"로
-- 2) 지침의 정확한 텍스트를 추가하고, 위치 1에 지침의 정확한 텍스트를 삽입
-- 3) 마지막 명령을 제거한 다음, 네 개의 값을 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러