제어 구조

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

제어 구조 는 Luau 코드 실행 흐름을 관리하는 문입니다. 제어 구조는 네 가지 주요 유형입니다.

  • if then else 문은 지정된 조건이 true 인 경우에만 코드를 실행합니다. 코드 실행은 반복되지 않습니다.
  • while loop 은 지정된 조건이 true 인 경우에만 코드를 실행하고 조건이 true 인 경우에만 실행을 반복합니다.
  • 반복 루프는 코드를 실행하고 조건이 true인 경우 실행을 반복합니다.
  • 루프 실행을 위한 for loop 코드는 지정된 입력에 따라 일정 수의 실행을 수행합니다.

if 문, while 루프 및 repeat 루프는 모든 Luau 식이나 값일 수 있습니다. 값이 1> force1> 또는 4> nil4> 이 아니면 Luau는 조

문이 있으면

기본 if 문은 조건을 테스트합니다. 조건이 트루인 경우 Luau는 코드를 thenend 사이에서 실행합니다.

if 조건이 거짓인 경우 추가 조건을 테스트하려면 if 문을 사용할 수 있습니다. else 문을 사용하여 모든 1>if1>

if, elseif, 및 else 조건의 체인에서 조건을 테스트하면 Luau는 상위에서 첫 번째 1> true1> 조건을 테스트하고 다음 4> else4> 코드를 실행합니다.


if 2 + 2 == 5 then
print("Two plus two is five") -- 조건이 거짓이므로 출력하지 않습니다
elseif 2 + 3 == 5 then
print("Two plus three is five") -- 2 + 3 = 5
else
print("All conditions failed") -- 이전 조건이 트루인 경우 출력하지 않습니다.Doesn't print because the previous condition is true
end

루프 중

while — do 루프는 지정된 조건이 트루 또는 틀이 아닌지 평가합니다. 조건이 false 또는 1> nil1>인 경우 루프가 종료되고 Luau는 루프에서 코드를 건너뛁니다. 조건이


local timeRemaining = 10
while timeRemaining > 0 do
print("Seconds remaining: " .. timeRemaining)
task.wait(1)
timeRemaining -= 1
end
print("Timer reached zero!")
--[[ 결과 출력:
Seconds remaining: 10
Seconds remaining: 9
Seconds remaining: 8
Seconds remaining: 7
Seconds remaining: 6
Seconds remaining: 5
Seconds remaining: 4
Seconds remaining: 3
Seconds remaining: 2
Seconds remaining: 1
Timer reached zero!
]]

무한 루프

while — do 루프를 작성하려면 true를 조건으로 설정합니다.


while true do
print("Looping...")
task.wait(0.5)
end
--[[ 결과 출력:
Looping...
Looping...
Looping...
Looping...
...
]]

반복 루프

peat — until 루프는 조건이 트루인 경우까지 반복됩니다. 조건 테스트는 코드 블록 실행을 평가하므로 코드 블록은 최소 한 번 실행됩니다. 다른 언어와 달리 로컬 변수의 1> 4> peat


local currentGoblinCount = 18
-- 게임에서 최대 25개의 골렘을 생성
repeat
spawnGoblin()
currentGoblinCount += 1
print("Current goblin count: " .. currentGoblinCount)
until currentGoblinCount == 25
print("Goblins repopulated!")
--[[ 결과 출력:
Current goblin count: 19
Current goblin count: 20
Current goblin count: 21
Current goblin count: 22
Current goblin count: 23
Current goblin count: 24
Current goblin count: 25
Goblins repopulated!
]]

루프용

루프는 코드를 집합의 크기와 관계없이 숫자 카운터 또는 항목의 수를 기반으로 여러 번 실행합니다.

반복 수 입력

for — do 루프는 수정 제안사용하여 루프를 실행할 때의 수를 결정합니다. 루프는 시작 값, 종료 값 및 선택적 증가량을 가진 문자열으로 선언됩니다.

Luau는 시작 값과 동일한 카운터를 설정하고, for 루프에서 코드 블록을 실행한 다음, 카운터에 증가를 더합니다. 증가가 양수인 경우 카운터가 끝값과 같거나 더 작을 때까지 프로세스를 반복합니다. 증가가 음수인 경우 카운터에 증가를 더하지 않습니다

옵션 증가량은 1 로 기본적으로 지정됩니다. 전체 숫자가 아닌 경우 필요합니다.


for counter = 1, 3 do
print(counter)
end
--[[ 결과 출력:
1
2
3
]]
for counter = 1, 6, 2 do
print(counter)
end
--[[ 결과 출력:
1
3
5
]]
for counter = 2, 0, -0.5 do
print(counter)
end
--[[ 결과 출력:
2
1.5
1
0.5
0
]]

루프용 제네릭

일반적인 for 루프는 컬렉션 내의 항목이 아닌 순서로 반복합니다. 일반적인 for 루프를 사용하면 컬렉션 내의 각 항목에 대해 코드를 실행할 수 있으며, 코드를 쉽게 사용할 수 있습니다.

루프에는 함수나 이터레이터가 필요하여 다양한 형식의 컬렉션을 반복하려면 반복할 수 있습니다. 전역 ipairs() 는 배열에 대한 이터레이터를 반환하고, 전역 pairs()는 사전에 대한 이터레이터를 반환합니다. Library.

일반화된 반복

In Luau에서 테이블을 직접 in 키워드로 반복하여 테이블을 반복할 수 있습니다. 대신 ipairs()와 같은 반복 함수를 사용하는 대신 테이블을 반복할 수 있습니다.


for i, v in {1, 2, 3, 4, 5} do
print(i, v)
end

일반화된 반복은 또한 __iter 메타메서드를 사용하여 사용자 정의 반복 함수를 만들 수 있습니다. 이 조작된 예는 배열의 순서대로 반복하지만, 마지막 요소에서 첫 번째로:


local myTable = {1, 2, 3, 4, 5}
myMetatable = {
__iter = function(t)
local i = #t + 1
return function()
i -= 1
if i > 0 then
return i, t[i]
end
end
end,
}
setmetatable(myTable, myMetatable)
for i, v in myTable do
print(i, v)
end
--[[ 결과 출력:
5 5
4 4
3 3
2 2
1 1
]]

배열

함수 ipairs() 는 테이블의 숫자 인덱스를 반복하는 이터레이터를 반환하고 각 요소에 대해 indexvalue를 반환합니다. 이렇게 하면 모든 인덱스가 숫자인 배열에 적합합니다.


local array = {"a", "b", "c", "d", "e"}
for index, value in ipairs(array) do
print(index, value)
end
--[[ 결과 출력:
1 a
2 b
3 c
4 d
5 e
]]

사전

pairs() 함수는 모든 인덱스(수학 인덱스를 포함하여)를 반복하는 이터레이터를 반환하고 각 항목에 대해 keyvalue을 반환합니다. 디클러전 테이블의 요소 순서는 임의입니다. 이를 통해 문자열을 정렬하


local dictionary = {
[1] = "a",
["Hello"] = "b",
[5] = "c",
[true] = "d",
["World"] = "f",
[false] = "e"
}
for key, value in pairs(dictionary) do
print(key, value)
end
--[[ 결과 출력:
Hello b
true d
false e
World f
5 c
1 a
]]

제어 키워드

부서진 루프

루프를 종료하려면 break 키워드를 사용하십시오. 다음 코드 샘플은 무한 whiledo 루프를 끊는 방법을 보여줍니다.


local secondsElapsed = 0
local timeout = 5
while true do
task.wait(1)
secondsElapsed += 1
print("Seconds elapsed:", secondsElapsed)
if secondsElapsed == timeout then
break
end
end
print("Five seconds elapsed. Time to move on!")
--[[ 결과 출력:
1
2
3
4
5
Five seconds elapsed. Time to move on!
]]

반복 루프

루프를 반복하고 다시 시작하려면 continue 키워드를 사용하십시오. for 루프는 카운터를 반복합니다; while 및 2> peat2> — 5> até5>


local function GetChildrenOfClass(parent: Instance, className: string): {Instance}
local children = {}
for _, child in parent:GetChildren() do
if child.ClassName ~= className then continue end -- 루프를 반복합니다.
table.insert(children, child)
end
return children
end