coroutine create와 resume
Coddy Lua 여정의 로직 및 흐름 제어 (Logic & Flow) 섹션에 포함된 레슨. 54개 중 49번째.
이제 coroutine이 무엇인지 이해했으니, Lua에서 실제로 coroutine을 만들고 실행하는 방법을 알아봅시다.
코루틴을 생성하려면 coroutine.create() 함수를 사용합니다. 이 함수는 일반 함수를 인수로 받아 코루틴 객체로 감쌉니다. 기본 구문은 다음과 같습니다.
function myTask()
print("Hello from coroutine!")
end
local co = coroutine.create(myTask)이 시점에는 coroutine이 존재하지만 아직 실행을 시작하지 않았습니다. function myTask는 호출되지 않았습니다. coroutine의 실행을 실제로 시작하거나 계속하려면 coroutine.resume()을 사용합니다:
coroutine.resume(co)coroutine에서 resume()을 처음 호출하면 function의 시작부터 실행을 시작합니다. coroutine이 일시 중지되지 않고 끝까지 실행되면 완료되며 다시 resume할 수 없습니다.
다음은 완전한 예제입니다:
function greet()
print("Starting...")
print("Finishing!")
end
local co = coroutine.create(greet)
coroutine.resume(co) -- 두 메시지를 모두 출력합니다coroutine은 처음부터 끝까지 한 번에 실행됩니다. 다음 레슨에서는 coroutine이 실행 중간에 일시 중지되도록 만드는 방법을 배웁니다.
챌린지
쉬움runSimpleCoroutine 함수를 작성하세요. 이 함수는 message를 인수로 받아 해당 메시지를 출력하는 코루틴의 출력을 반환합니다.
제공된 메시지를 출력하는 함수를 감싸는 coroutine.create()를 사용하여 coroutine을 생성하세요. 그런 다음 coroutine.resume()을 사용하여 coroutine을 실행하세요. 함수는 출력된 message를 반환해야 합니다.
논리:
- message 매개변수를 출력하는 function 정의
-
coroutine.create()를 사용하여 해당 function으로부터 coroutine 생성 coroutine.resume()를 사용하여 coroutine 재개- 출력된 message 반환
매개변수:
message(문자열): coroutine이 출력할 message
반환값: coroutine이 출력한 message(문자열)
직접 해보기
function runSimpleCoroutine(message)
-- 여기에 코드를 작성하세요
end
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 및 흐름 제어 (Logic & Flow)의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러