본문 바로가기

[ C/ C++ 프로그래밍 ]/[ 루아 ]

[ 루아 ] 함수

 함수란 코드의 중복을 피하고 구조적으로 만들며, 다른 사람이 이해하기 좋게 만들기 위하여 사용된다. ==> 반복된 코드들을 보기 좋게 정리해 놓은 것


ㅇ 함수의 기본
 루아에서는 함수는 변수 한 종료로 처리된다 ==> 정의되는 방식은 변수와 약간 다르다.

  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