일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rigidbody.Moveposition
- 백준 2225번 c++
- 백준
- 1699번
- 백준 10844번 c++
- 2644번
- 플레이어 이동
- 백준 11726번 C++
- 백준 2193번 c++
- 차이
- 탑싯기출문제
- bfs
- long int 의 차이
- 프로그래머스 단체사진 찍기 C++
- c++
- 유니티 LTS
- 유니티 꿀팁
- 유니티 Rigidbody 이동
- TOPCIT 후기
- UML Diagram 정리
- rigidbody.position
- 로블록스 script local script 차이
- transform.position
- TOPCIT 문제 유형
- 유니티
- 프로그래머스 가장 큰 수 C++
- 탑싯기출
- 풀이
- 코드
- 배열 stack overflow
- Today
- Total
목록Lua & Roblox/Lua (3)
Kiki Devlog
1번함수는 재귀호출의 문제가 없지만 2번함수는 재귀함수 내부에서 fact 함수를 호출 할 때 아직 지역변수인 fact가 정의되기 전이기 때문에 버그를 일으킨다. -- 1번 함수(정상작동) local function fact(n) if n == 0 then return 1 else return fact(n-1)*n end end --2번 함수 (버그 유발) local fact = function (n) if n == 0 then return 1 else return fact(n-1)*n end end print(fact(3))
지역변수는 아니지만 전역변수도 아닌 것. 아래 코드에서 i 는 비지역 변수이다. function A() local i = 0 return function() i = i +1 return i end end
아래 코드의 익명함수 기준으로 i 는 전역 변수도, 지역 변수도 아니다. 익명함수가 호출되는 순간 이미 newCounter()함수는 종료됐기 때문에 i 는 유효 범위를 벗어나게 된다. 하지만 이 코드는 제대로 동작하는데, 바로 클로저 때문이다. 클로저는 함수, 함수에서 필요로 하는 모든 비지역 변수들을 포함하는 것이다. 그래서 newCounter함수를 다시 호출하면 새 지역변수 i를 다시 만들고 이를 새 클로저로 받아쓰게 된다. 그래서 C1과 C2는 같은 함수에 대한 다른 클로저가 된다. 사실 루아에서 함수라고 부르며 호출하는 것들은 클로저다...! function newCounter() local i = 0 return function() -- 익명함수 i = i+1 return i end end c1..