Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 유니티
- 유니티 LTS
- rigidbody.position
- bfs
- 1699번
- 백준 2225번 c++
- 풀이
- UML Diagram 정리
- 백준 11726번 C++
- 백준 10844번 c++
- 프로그래머스 가장 큰 수 C++
- 2644번
- 백준 2193번 c++
- 차이
- TOPCIT 후기
- 백준 17299번 c++
- 플레이어 이동
- rigidbody.Moveposition
- 로블록스 script local script 차이
- 백준 10799번 c++
- transform.position
- 유니티 Rigidbody 이동
- 코드
- 프로그래머스 단체사진 찍기 C++
- 유니티 꿀팁
- 배열 stack overflow
- c++
- 백준
- TOPCIT 문제 유형
- long int 의 차이
Archives
- Today
- Total
Kiki Devlog
클로저 본문
728x90
아래 코드의 익명함수 기준으로 i 는 전역 변수도, 지역 변수도 아니다.
익명함수가 호출되는 순간 이미 newCounter()함수는 종료됐기 때문에 i 는 유효 범위를 벗어나게 된다.
하지만 이 코드는 제대로 동작하는데, 바로 클로저 때문이다.
클로저는 함수, 함수에서 필요로 하는 모든 비지역 변수들을 포함하는 것이다.
그래서 newCounter함수를 다시 호출하면 새 지역변수 i를 다시 만들고 이를 새 클로저로 받아쓰게 된다.
그래서 C1과 C2는 같은 함수에 대한 다른 클로저가 된다.
사실 루아에서 함수라고 부르며 호출하는 것들은 클로저다...!
function newCounter()
local i = 0
return function() -- 익명함수
i = i+1
return i
end
end
c1 = newCounter()
print(c1()) --1
print(c1()) --2
c2 = newCounter()
print(c2()) --1
'Lua & Roblox > Lua' 카테고리의 다른 글
지역 함수의 재귀 호출 (0) | 2022.07.14 |
---|---|
비 지역 변수 (0) | 2022.07.14 |
Comments