Neko:Lua

Lua 시작 [펌]

by 나뚜루 posted Jan 10, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
루아 명령어
and break  do  else  elseif   
end  false  for  function  if   
in  local  nil  not  or   
repeat  return  then  true  until 

while

 

변수작명법

c의 경우는 int 자료형을 가지는 변수 iVal을 만든다면

int iVal = 0; 이라 하겠지만

루아의 경우는... 자료형이 없다. 없다기보다는 모든 자료타입에 맞게 모든 자료타입을

제공한다고 보면 되겠다 vb의 variant형과 같다고 보면된다.

 

즉 루아에서는 iVal = 0 이라고 하면 된다.

 

변수의 초기화

c에서는

int* piVal = &piVal2;

위와같이 대입을 하였을때 piVal을 초기화하려면 NULL을 쓰면된다.

piVal=NULL;

이렇게말이다.

 

루아에서는 nil 있다.

 

루아에서는 변수를 초기화한다면 iVal = nil 이 되겠다.

그러나 정확한 의미는 초기화보다는 삭제에 해당하기 때문에

해당 변수를 새로 만들어주어야한다.

 

ex)

iVal = 32

iVal = nil

print(iVal)

 

요 문장을 실행하면 실행결과는 nil 이라 나온다. (값이 nil 이란 의미가 아니라 변수가 없기때문에 nil)

 

ex-2)

iVal = 32

iVal = nil

print(iVal+1)

 

이라고 실행하면 에러가 난다. 2번째 문장에서 iVal이 삭제되었기때문에

3번째 문장에서 iVal에 1을 더할 수 가 없기 때문이다.

 

ex-3)

iVal = 32

iVal = nil

iVal=0

print(iVal+1)

 

이라고 실행하면 실행결과는 1이 나온다.

3번째 문장에서 iVal을 생성하고 0 을 대입해준걸로 인식되기 때문이다. ㅇㅋ?

 

루아에서의 문자열

루아에서 문자열 은 유연하다.

 

cVal_1 = "가나다라마바사아자차카타파하"

cVal_2 = [[가나다

            라마바

            아자차

            카타파]]

 

print(cVal_1)

print(cVal_2)

 

-result-

가나다라마바사아자차카타파하

가나다

라마바

아자차

카타하

 

지역변수와 글로벌변수

 

function Print_Val()

            iVal = 0

            print(iVal)

end

 

Print_Val()

print(iVal)

 

-result-

0

0

 

함수내에서 iVal이란 변수를 만들고 0 으로 초기화시켰다.

함수호출을 하여 iVal의 내용을 출력하니 0이 나온다.

문제는 함수 외에서 함수내에서 만들어진 변수인 iVal의 값을 출력하니 0이 나온다.

변수가 없었다면 nil이 나왔겠지만 0이 나왓다는건 함수내에서 변수를 만들었다 하더라도

local 을 붙이지 않았다면 global 로 선언된다는걸 알 수 있다.

 

function Print_Val()

            local iVal = 0

            print(iVal)

end

 

Print_Val()

print(iVal)

 

-result-

0

nil

 

이 경우엔 함수내에서 만들어진 변수엔 local 을 붙여줌으로서 함수 외부에서 참조하는걸

막았다 .

 

함수내에서 local로 만들었다고 함수내에선 항상 사용가능한건 아니다.

 

function Print_Val()
        local iVal = 0
        print(iVal)
        if iVal == 0 then 
                local iVal2 = 1 
        end
        print(iVal2)

end

 

Print_Val()

 

-result-

0

nil

 

iVal2는 if 블럭 안에서 생성된 local 변수기 때문에 해당 if 구문 내에서만 사용할 수 있다.

이건 뭐 당연한거다.

lua는 자유로움과 문법적인측면에서 vb를 많이 닮았다.

관계연산자

산술연산자는 뭐 다를수가 없으니 패스, 관계연산자의 경우도 c와 동일하다고보면되나.

"상등" 즉 "같지않다" 에 대한 표현만 다르다.

 

c의 코드라면 if ( 2 != 2)

즉 2가 아니라면 이란 표현이 루아에선

if 2 ~=2 then 으로 쓸 수 있다

 


if 2 ~= 1 then
 print("부등")
end

if 2 == 2 then
 print("상등")
end

-result-

부등

상등

 

제어구조

다른 프로그래밍 언어들과 마찬가지로 조건에 따라서 호출순서 분기를 수정해줄 수 있다.

 

함수

함수는 function 함수명 (넘겨받을 자료) 로 정의할 수 있다.

 

function Get_Sum(iVal1,iVal2)
        return iVal1 + iVal2
end


local iResult = Get_Sum(1,2)

print ( iResult)

 

-result-

3

 

가변인수함수

function Get_Sum(...)
        local iVal=0
        local iLoop =1
      

        while iLoop <= arg.n do
                iVal = arg[iLoop]

                iLoop= iLoop+1
                print(iVal)
       end
end

Get_Sum(1,2,3,4,5,6,7)

-result-

1

2

3

4

5

6

7

출처 : http://blog.naver.com/aozora18/70036810912