함수란 코드의 중복을 피하고 구조적으로 만들며, 다른 사람이 이해하기 좋게 만들기 위하여 사용된다. ==> 반복된 코드들을 보기 좋게 정리해 놓은 것
ㅇ 함수의 기본
루아에서는 함수는 변수 한 종료로 처리된다 ==> 정의되는 방식은 변수와 약간 다르다.
function 함수명()
코드 블럭
end
함수를 정의하기 위해서는 function 키워드를 먼저 사용하고 그 뒤에 함수명을 적는다.
코드 블럭을 적고 코드 블럭을 모두 작성했으면 end 키워드로 함수의 종료를 알린다.
- 예제 소스
function test()
print("함수 Test")
end
- 실행 결과
ㅇ 함수의 입력
입력인자를 통해서 입출력을 한다
function 함수명(입력인자)
코드 블럭
end
- 예제 소스
function test(input)
print("입력인자 : " .. input)
end
- 실행 결과
함수의 입력 인자는 자동적으로 지역변수로 정의 된다.==> 함수 밖에서 사용 불가
ㅇ 함수의 출력
function 함수명(입력인자)
코드 블럭
return 출력인자
end
- 예제 소스
function test(input)
output = "입력인자 : " .. input
return outPut
end
- 실행 결과
ㅇ 다중 입출력
여러개의 인자를 입출력으로 사용 가능 , 쉼표로 구분한다.
function 함수명(입력인자1, 입력인자2)
코드 블럭
return 출력인자1, 출력인자2
end
- 틀린 소스
function add(a, b)
result = a + b
return result, a, b
end
- 실행결과
※ 주의 하자 : 루아에서는 인자값은 지역변수이다. 함수 내에서만 사용 가능하다. 위의 소스는 C/C++에서는 샐행이 되는데 루아에서는 실행이 안된다.
C/C++ 사용자가 실수 하기 쉬운것이다.
- 올바른 소스
function add(a, b)
result = a + b
num1 = a
num2 = b
return result, num1, num2
end
- 실행 결과
- 예제 소스
function Calc(a, b)
r1 = a + b
r2 = a - b
r3 = a * b
r4 = a / b
return r1, r2, r3, r4
end
- 실행 결과
※ 함수의 이름도 대/소문자를 구별한다. 잊지 말자
ㅇ 가변 인수
상황에 따라서 몇개의 입력이 들어올지 모른느 상황이 생긴다. 루아에서는 가변 인수를 처리할 수 있도록 지원한다.
'..'를 이용해서 가변인수를 처리할 수 있다.
다음 예제를 살펴보면 입력인자에 '..'를 사용하고 있다. 입력받은 가변 인수에 대한 정보는 arg테이블에 저장된다. 입력받은 인수의 개수는 arg.n을 이용하여 얻을 수 있다.
- 예제 소스
function print_inputs( ... )
print('입력인자 갯수 : ' ..arg.n)
for i = 1 , arg.n do
print(i.."번 째인자"..arg[i])
end
end
- 실행 결과
가변 인수를 일반적인 입력인자와 섞어서도 사용할 수 있다.
function sum( a, b, ... )
ret = a + b
for i = 1 , arg.n
do
ret = ret + arg[i]
end
return ret
end
- 실행 결과
'[ C/ C++ 프로그래밍 ] > [ 루아 ]' 카테고리의 다른 글
[ 루아 ] 테이블의 활용과 자료 구조 (1) | 2010.07.21 |
---|---|
[ 루아 ] 테이블 (1) | 2010.07.20 |
[ 루아 ] EditPlus에서 루아 사용하기 (3) | 2010.07.19 |
[ 루아 ] 제어 (0) | 2010.07.19 |
[ 루아 ] 연산자 (1) | 2010.07.17 |