비주얼노벨 강좌

루아 명령어
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

Comment '6'
  • ?
    [Dark].Angel 2009.01.12 16:22

    c에서는

    int* piVal = &piVal2;

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

    piVal=NULL;

    이렇게말이다.
     참고로...  int* piVal = &piVal2; 은 포인터입니다. 변수와 포인터의 초기화 방법이 다르니깐
    여러분 착각은 하지 말아주세요 ㅎㅎ... 포인터는 연산자를 넣어서 초기화를 하고 NULL로도 됩니다.

    그냥 변수는 이렇게 해두 되죠. int piVal = 0;
    포인터는 NULL로 해주는 거죠.

    루아에서는 nil로 초기화 하는 겁니다.


     

  • ?
    레노 2009.01.13 14:22
    문자열 취급이 직관적이고 간편하네요. 굿입니다.
  • ?
    네오라인 2009.01.15 16:32

    cVal_2 = [[가나다 
                라마바 
                아자차 
                카타파]]

    를 입력하면

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

    가 나오는군요?!

  • ?
    후르츠파르페 2009.01.21 02:09
    오호.. 명령어가 저게 주로쓰는거 다인가요?
  • profile
    NewSet 2009.02.02 15:49
    루어 모르는 1人
  • ?
    Jin's 2009.02.25 21:19
    뽕숀하고 리솔트  엔드는 알겟네

List of Articles
분류 제목 글쓴이 날짜 조회 수
Ren'Py 렌파이 관련 유용한 링크 모음 3 file 습작 2012.12.02 17640
Nekonovel 네코노벨 관련 유용한 링크 모음 1 file 습작 2012.11.19 11978
Neko:기타 쓰레드에 '대기' 명령어를 넣었을 때 나타날 수 있는 현상 file 하늘바라KSND 2014.11.27 1030
Neko:응용 네코노벨 미니게임 관련 스크립트-글라스 스노우 하늘바라KSND 2013.06.27 3367
Neko:기초 네코노벨 무작정 따라하기 - 2편 : 로고만들기 9 file 습작 2012.12.21 6147
Neko:기초 네코노벨 무작정 따라하기 - 1편 : 둘러보기 2 file 습작 2012.12.08 12613
Neko:Lua 마인크래프트에서 루아언어를 써 Boa요! 2 철쭉 2012.07.21 4183
Neko:Lua Lua for Windows 1 루아마당 2010.08.08 5556
Neko:Lua LUA 란 무엇인가? 6 루아마당 2010.08.08 7229
Neko:Lua 루아의 메모리 관리 방식 루아마당 2010.08.08 5472
Neko:Lua 루아 스크립트를 1 무뇌인 2010.04.20 5924
Neko:Lua 비쥬얼 C++에 루아 연동시키기- file Saber 2010.01.02 7983
Neko:Lua 좀비서바이벌 1.11b 버전 Lua 스크립트 16 판져중위 2009.11.30 9285
Neko:Lua 루아에 잘못 알고계신분이 있는거 같아서 몇줄 적습니다. 16 코르뉴 2009.09.25 8088
Neko:Lua 루아가뭔가요 10 영웅 2009.09.24 6181
Neko:Lua 루아스크립트란 무엇인가? 9 행운 2009.06.11 8452
Neko:Lua 루아가 뭐죠? 11 sooe 2009.06.09 7212
Neko:Lua 루아에 대하여 궁금한점 18 아하!잘봤어요. 2009.05.04 7154
Neko:Lua 루아의 재미있는 기능! 15 엠피군 2009.01.18 7681
Neko:Lua 루아 스크립트 기초 강좌 2부 5 백호 2009.01.12 7760
Neko:Lua 루아 스크립트 기초 강좌 1부 6 백호 2009.01.12 13633
Neko:Lua Lua 시작 [펌] 6 나뚜루 2009.01.10 7437
Board Pagination Prev 1 2 Next
/ 2