책 정리/Programming in Lua
루아(Lua), 일반 for 문 개념 잡기 ( 일반 for 문의 문법 : The Semantics of the Generic for ) 편
최익필
2010. 12. 22. 23:50
이 포스트를 만든 목적
- 루아 일반 for 문이 맨날 헷갈려서 정리하려고
이 포스트의 준비물
- firefox 4 b7
- eclipse 3.6.1 + vrapper
- lua 5.1.4
참조 링크
- http://www.lua.org/pil/7.2.html
내용
일반 루아 for 문이란 무엇인가?
- 루아 for 문에 in 키워드가 들어간 for 문이다. :)
- php 의 foreach, C#의 foreach, c++ boost의 BOOST_FOREACH 와 비슷한 기능을 한다.
어떻게 이해 해야 하는가?
- 루아 일반 for 문은 다음과 같다,
- 일단 일반 lua for 문에는 변수 3개가 숨어 있다고 외우자.
- 루이 알반 for 문을 풀어 해치면 다음과 같이 변한다.
- 핵심은 <exp-list> 의 반환값 중 첫째는 반복자 함수:_f, 둘째는 불변변수:_s(보통 테이블 자체 그대로), 셋째는 제어변수 초기값:_var을 할당한다.
- <exp-list> 후 _f(_s, _var) 를 실행하고, 이 반환값을 <var-list>에 넣는다.
- <var-list> 중 첫번째 값을 _var 에 대입하고, _var 가 nil 이 아니면, <body> 실행 한다.
- 다시 _f(_s, _var) 를 수행해서 _var 가 nil 이 아닐때까지 반복한다.
여담
- 말로 설명하려니까 길어져서, 코드로 대체한다.
- 백트랙킹을 하기 위해 테이블을 훎는 재귀 함수 만들려고 하니까, 일반 for문이 생각 안나더라.
:wq