반응형

루아에서의 for 문은 크게 두가지의 형태로 생각해 볼수 있습니다.

  1. 인덱스 증감에 의한 데이터 접근 (Numeric progression)  -- numeric for 문이라 함
  2. Iterators (반복자) 에의한 데이터 접근 (Iterators)            -- generic for 문이라 함

Numeric Progression

 

Numeric progression 에 의한 접근은 다음과 같은 문법을 갖습니다.

 

for variable = from_exp , to_exp [, step_exp] do block end

이러한 형태에서는

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

와 같이 변수를 사용할 수도 있습니다.

+ Recent posts