Thinking Different




※ 함수란? 
 프로그램은 함수의 모임이라고 할 수 있습니다. 물론 함수내에는 제어, 연산자 등등... 기타 코드들이 있습니다. 이런 함수들의 장점은 코드의 재사용으로 인한 중복회피 및 다른사람이 이해하기 쉽도록 하기 위함입니다.


a. 함수의 기본 형태

 함수 기본 형태
function 함수명(인자)
statement
...
end                      

함수의 형태는 위와 같은 형태로 되어있다. 여기서 function과 end는 함수의 시작과 끝을 알리는 구문이므로 반드시 써줘야 하며 함수명으로 호출하여 해당 함수를 사용하게 된다.


b. 함수의 입출력 - 인자를 통한 입력 및 return을 이용한 출력 방법

1
2
3
4
5
function test(input)
    return "입력 : "..input;
end
 
print(test("korea"))



위와 같이 입력 인자를 input으로 "korea"값을 받아서 .. 연산자를 이용하여 "입력 : "과 합친 뒤 return하는 형태로 되어있다.
출력 결과는 "입력 : korea" 이다.


c. 다중 입출력 - 입력 인자 및 return인자를 여러개를 줄 수 있다. 반환된 return인자는 차례대로 반환받는 변수에
                         저장되며, 만약 변수가 부족하다면 부족분의 값은 제외되고 앞의 결과만 반환 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function test(a,b)
    a1 = a+b;
    a2 = a-b;
    a3 = a*b;
    a4 = a/b;
 
    return a1, a2, a3, a4;
end
 
print(test(10,2))
 
q,w,e,r = test(10,2);
 
print(q,w,e,r)

 

위와 같이 입력인자를 2개를 이용하여 4칙연산을 실행하고 4개의 값을 차례대로 반환하도록 되어있다.
출력결과는 둘다 12 8 20 5 이다.


d. 가변인수 - 입력 인자를 몇개까지 들어오는지 확신할 수 없을때 가변인수를 처리하도록 '...' 를 루아에서는 제
                     공합니다. 입력받은 가변인수는 arg.n으로 얻을수 있으며 가변인자는 arg[i]를 사용하여 받을 수
                     있습니다.


1
2
3
4
5
6
7
8
function print_intpus(...)
    print("입력인자 갯수 : "..arg.n);
    for i=1, arg.n do
        print(i.."번째 인자 : "..arg[i]);
    end
end
 
print_intpus(1,2,3,4,5);

위와 같이 입력인자의 수를 알 수 없을때 '...' 을 지정하고 arg.n 갯수만큼 arg[i]인자를 받고 있습니다. 이외에도 일반 인자 몇개와 가변인자를 같이 섞어 쓸 수도 있습니다. 
아래의 예제를 보시기 바랍니다.

1
2
3
4
5
6
7
8
9
10
function print_intpus(a,b,...)
    print("입력인자 갯수 : "..arg.n);
    ret = a+b;
    for i=1, arg.n do
        ret = ret + arg[i];
    end
    print("a, b, 인자의 합 : "..ret);;
end
 
print_intpus(1,2,3,4,5);
 



'프로그래밍 언어 > Lua' 카테고리의 다른 글

7. C++에서 루아 사용하기  (0) 2011.10.16
5. 루아 제어문편  (0) 2009.09.02
4. 루아 연산자편  (0) 2009.09.02
3. 루아 변수편  (0) 2009.08.31
2. 루아로 찍어보자 "Hello, World!"  (2) 2009.08.31