이 포스트를 만든 목적

  • 루아를 공부하는데, 변수 범위 때문에, 3시간 동안 디버깅 한것을 기록해 두려고

이 포스트의 준비물

  • eclipse 3.6.1 + Vrapper
  • lua 5.1.4
  • firefox 4 b7
  • gvim 7.3

참조 문서

  • 호베르토 이에루자림스키 저. Programming in Lua. 권태인 역.
    인사이트. 초판 2007.06.15. 에서 4.2 지역 변수와 블록page(38~41) 중

내용

재귀 함수가 이상하게 돌아서, 디버깅을 오랜 시간하다가,이상항 부분을 발견했는데, 그것이 바로 루아에서의 지역 변수 범위 이다. 사실 책에서도 초기에 아주 자세히 설명 되어 있지만, 잊어먹고 있다가, 완전 상한 음식먹고 식중독 걸린 꼴이다.

루아에서의 변수 범위는 C/C++/C# 과 어떻게 다른가?

  • C/C++/C# 에선 블럭내에 선언된 변수는 자동으로 지역변수로 된다.
    - 루아에선, local 키워드로 변수를 선언(정의) 해야지만, 지역변수로 평가된다. 그 외는 전부 전역 변수로 평가된다.

이게 왜 문제가 되는가?

다음 코드 두개를 보고 무엇이 바뀌였는지 살펴보기 바란다. "변수 범위"만 C 와 같다고 하면, 두 함수는 동일하게 작동해야 한다. 하지만 ... test1, test2 의 작동은 다르게 작동한다. .. 왜 그런지 한눈에 안다면, 대단.. 그 자체,

여담

  • 전역이 아니라고 생각 되는 부분은 local 로 선언해야겠다.
  • 이러한 스타일 때문에, 루아에서 프로그래밍 방법 중 변수 선언 부분을 약간 바꾸어야 겠다.
  • 본 함수는 재귀를 이용한 13개의 숫자 중 6개의 숫자를 뽑아내는 함수이다.
  • 이러한 방법은 문제해결 방법 중 backtracking 방법에 이용된다.

:wq

posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요