1. 단일 인수
하나의 매개변수를 받는 함수

< ch501.lua 코드 >



--> 하나의 매개변수를 받는 함수 SetName() 을 실행시키는 화면, SetName에 매개변수 Young 을 집어넣었다. 한편, 문자열(String)을 이용하려면 항상 "" 가 있어야 한다는 것을 확인 할 수 있다. 만약 "" 가 없으면 문자열을 인식하지 못한다.

2. 다중 인수
여러개의 매개변수를 받는 함수

< ch502.lua 코드 >


--> 두개의 매개변수를 받는 함수 MyInfo() 를 실행시킨 화면. MyInfo에 두개의 매개변수를 집어넣어 실행시켰다.

다음은 가변적인 갯수, 즉 정해지지 않은 갯수의 매개변수를 받는 함수다.

< ch 503.lua 코드 >



--> 가변적인 갯수, 즉 정해지지 않은 객수의 매개변수를 받는 함수다. 여기서는 무작위로 4개의 매개변수를 받아 실행시키는 화면이다.

가변적인 갯수를 받으려면, 함수이름 옆에 매개변수 이름을 ...(마침표 세개)를 써주면 된다.
그렇게 한후, 함수를 실행시킬 때 입력되는 매개변수는 지역 테이블 arg(지역변수처럼 if문 안에서만 사용) 안에 차례대로 저장이 된다. 그리고 테이블 arg에 저장된 인수의 갯수는 arg.n 으로 알아낼 수가 있다.

(※ 무조건 arg.n 만 되는지는 아직 확인이 안됨. 분명한 것은 arg.n 이외에 것을 집어넣으면 오류가 발생, arg.a 나, name.n 등, 이름을 변경하려했지만 모두 에러가 발생함)

한편, string.format 함수는 뒤에 따라 나오는 매개변수들을 모두 나열하라는 의미를 지닌 함수이다. 사용법은 나중에 보기로 한다.


다음은 필수적으로 입력해야 하는 매개변수와, 추가도 가능한 형식의 매개변수를 받는 함수다.

< ch 503.lua 코드 > 안보이시면 클릭!



--> 위의 함수형식과 마찬가지다. 단, 여기서는 처음 두 매개변수, val1 과 val2 는 생략하면 안된다. 매개변수가 딱 2개일 경우에는 그냥 그 두 매개변수를 곱한다. 만일 세번째 매개변수가 존재하면 함수는 그것을 인수와 함께 곱해버린다. 그러나 그 이상의 추가되는 매개변수들은 무시가 된다.

3. 반환값

함수에서 자신의 처리 결과를 호출한 곳에게 돌려주는 역할을 하는 것이 있는데, 이때는 return 문을 사용한다.

사용용법은 다른 언어와 마찬가지인데, 다만, return 문에서 다른 함수를 호출하는 경우 루아는 그런 return 문을 그 함수 처리의 물리적인 끝으로 보고, 그 함수를 스택에서 제거한 후 즉시 다음 함수로 건너뛴다.


--> 위에서 함수 ExploreMaze() 가 실행이 되면, RoomA() 라는 함수로 넘어가게 된다. RoomA 라는 함수에서는 또, east 라는 입력을 받지 않으면, 여전히 RoomA() 함수에 머무르게 되지만, east를 입력하게 되면, HallA() 라는 함수로 넘어가게 된다. 이런식으로 쭈욱 이어지게 된다.


:
지역변수와 전역변수의 의미는 다른 기존의 언어와 동일

기본적으로 모든 변수는 전역변수이지만, 필요에 따라 지역변수를 설정해야 하는 경우가 있는데, 이때 지역변수는 local 이라는 예약어를 사용하여 지정한다.

function MyFunction()
    local myX = 7  -- 이 변수는 함수 실행이 끝나면 사라진다.
    if myX < 10 then
        local myY = "Hello World" -- 이 변수는 if문이 끝나면 사라진다.
        print(myY) -- 출력
    end
    print(myY) -- 위의 if문이 끝났으므로 nil 이 출력
end

한편 local 을 붙이지 않아도 자동적으로 지역변수가 되는 경우가 있는데,

1) for i=1, 10 do.... end 의 i는 for문 안에서만 유효한 값이다.
2) function MyFunction(param) 에서 param 에 들어가는 값 역시 자동으로 지역변수가 되며, 함수 MyFunction 이 끝나면 자동으로 사라진다.
:

BLOG main image
아무거나 공부하자!!! by Young79

공지사항

카테고리

분류 전체보기 (79)
Programing (29)
English (31)
Graphic (4)
Saying on T"We"tter (15)

최근에 올라온 글

최근에 달린 댓글

글 보관함

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total :
Today : Yesterday :