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