루아에서의 for 문은 크게 두가지의 형태로 생각해 볼수 있습니다.
- 인덱스 증감에 의한 데이터 접근 (Numeric progression) -- numeric for 문이라 함
- Iterators (반복자) 에의한 데이터 접근 (Iterators) -- generic for 문이라 함
Numeric Progression
Numeric progression 에 의한 접근은 다음과 같은 문법을 갖습니다.
for variable
=
from_exp,
to_exp [,
step_exp]do
blockend
이러한 형태에서는
variable 이 for 문을 들어가기전에 from_exp 에 의하여 초기화 되며, to_exp 가 될때까지 진행 하며
block 문이 수행 됩니다.
각 block 문이 수행된 후 step_exp 만큼 variable 은 중감하게 되어 to_exp 까지 도달하게 됩니다.
만약 step_exp 가 생략될 경우 1로 간주 하게 되어 1씩 증가하게 되는 것 입니다.
for i = 1,3 do print(i) end
결과
1
2
3
for i = 3,1 do print(i) end
와 같이 하면 for문은 돌지 않습니다.
c 에서 생각한다면 무한루프의 소지가 있습니다만, 루아에서는 그렇지 않습니다.
for i = 3,1,-1 do print(i) end
결과
3
2
1
for i=1,0,-0.25 do print(i) end
결과
1
0.75
0.5
0.25
0
와 같이 증감을 실수를 사용할 수 도 있습니다.
위의 예들에서 순차적 증가값으로 i 라는 변수를 사용하게 됩니다. 이 변수는 local 로 변수입니다.
for 문에 사용된 증감 변수는 local 이라 지정하지 않아도 자동적으로 local 변수로 처리 됩니다.
for i=1,0,-0.25 do print(i) end
print(i)
를 수행하면
1
0.75
0.5
0.25
0
nil와 같이 i 값이 nil 이 됩니다. 즉 for 문의 i 와 print(i) 의 i 가 다르다는 것이죠.
for i = e1,e2,e3 do myFunction(i) end
와 같이 변수를 사용할 수도 있습니다.
'Programming > LUA' 카테고리의 다른 글
[루아스크립트/프로그래밍]루아(LUA)함수의 인수는 global 인가 local 인가? (0) | 2018.05.17 |
---|---|
[루아스크립트/프로그래밍]루아(LUA)for 문에 대한 tutorial (2) (0) | 2018.05.17 |
[루아스크립트/프로그래밍]루아(LUA)함수를 테이블 키로 사용한다 (0) | 2018.05.13 |
[루아스크립트/프로그래밍]루아(LUA)주소로서의 문자열 (0) | 2018.05.13 |
[루아스크립트/프로그래밍]루아(LUA)Table key 에 대한 노트 (0) | 2018.05.11 |