범위와 블록
Coddy Lua 여정의 기초 섹션에 포함된 레슨. 90개 중 86번째.
Lua에서는 do...end 블록을 사용해 코드의 어디에서든 새 스코프를 만들 수 있습니다. 이 블록을 사용하면 지역 변수에 접근할 수 있는 범위를 정확하게 제어하여 변수 스코프를 세밀하게 관리할 수 있습니다.
do...end 블록을 사용해 새 스코프를 만드는 방법은 다음과 같습니다.
local outerVar = "I'm outside"
do
local innerVar = "I'm inside"
print(outerVar) -- 이것은 작동합니다
print(innerVar) -- 이것도 작동합니다
end
print(outerVar) -- 이것은 작동합니다
print(innerVar) -- nil을 출력합니다: innerVar는 블록 안에서만 존재합니다스코프의 강력한 점은 서로 다른 블록에서 같은 이름의 지역 변수를 사용할 수 있으며, 이 변수들이 완전히 별개로 유지된다는 것입니다.
local name = "Alice"
do
local name = "Bob" -- 다른 변수!
print(name) -- "Bob"를 출력합니다
end
print(name) -- "Alice"를 출력합니다각 do...end 블록은 지역 변수를 위한 독립된 환경을 만듭니다. 블록 안에서 선언된 변수는 바깥쪽 범위로 벗어날 수 없지만, 바깥쪽 범위의 변수는 안쪽 블록에서 접근할 수 있습니다.
챌린지
쉬움서로 다른 범위에서 같은 이름을 가진 지역 변수가 완전히 분리되어 있음을 보여 주도록 중첩된 do...end 블록을 만드세요.
먼저 바깥 범위에서 playerLevel이라는 이름의 지역 변수를 만들고 값 10을 할당한 다음 출력하세요.
그런 다음 do...end 블록을 만들고 그 안에서 다음을 수행하세요.
- 값
25를 가진playerLevel이라는 이름의 새 지역 변수를 선언하세요. - 이 안쪽
playerLevel을 출력하세요.
안쪽 블록이 끝난 후 바깥쪽 playerLevel을 다시 출력해 값이 변하지 않았음을 보여 주세요.
이는 서로 다른 범위에 있는 이름이 같은 지역 변수들이 완전히 독립적이며, 안쪽 변수가 바깥쪽 변수에 영향을 주지 않는다는 것을 보여 줍니다.
직접 해보기
-- TODO: 여기에 코드를 작성하세요이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러