이 포스트를 만든 목적

  • 루아 일반 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

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

댓글을 달아 주세요