고급 펑션(Advanced Function)
고급 펑션
이 강좌에서는 펑션의 더 자세한 사용 방법을 배웁니다. 이전 강좌에서 배운 변수의 자료형의 지식이 필요하며,
반환값이 있는 펑션, 펑션과 변수를 같이 활용하는 방법을 알아봅니다.
펑션의 반환값
펑션에는 반환값(return) 이라는 개념이 있습니다. 펑션은 어떠한 작업을 실행하는 것 뿐만 아니라,
어떠한 정보를 가져와서 펑션 그 자체를 값으로 바꿔줄 수 있습니다.(트리거의 플레이스홀더와 비슷함)
즉, 펑션을 특정한 곳에 넣으면 그 자리가 펑션의 반환값으로 대체되는 것입니다.
몇가지 반환값이 존재하는 펑션들을 예로 들어보겠습니다.
player()
player()
펑션은 현재 명령어를 실행한 플레이어의 이름을 반환합니다.
인수는 없으며, 반환값의 자료형은 문자열 입니다.
예제 1.
/test = msg(player()'테스트')
/test
를 입력하면 입력한 플레이어에게 "(입력한 플레이어 이름) 테스트" 라는 메시지가 전송됩니다. (즉, ITSTAKE 라는 플레이어가/test
를 입력하면 "ITSTAKE 테스트" 라는 메시지가 전송됨)
/test = msg(player() '테스트')
/test
를 입력하면 입력한 플레이어에게 "(입력한 플레이어 이름) 테스트" 라는 메시지가 전송됩니다.(플레이어 이름과 테스트 사이에 띄어쓰기는 하나임)
/test = msg('player()테스트')
/test
를 입력하면 입력한 플레이어에게 "player()테스트" 라는 메시지가 전송됩니다. (ITSTAKE 라는 플레이어가/test
를 입력해도 "player()테스트" 라는 메시지가 그대로 전송됨)
위 두 예제를 보면, 펑션을 '(따옴표) 안에 넣는다면 펑션이 반환값으로 대체되지 않고 그대로 표시된다는 것을 알 수 있습니다.
이는 player()
펑션 뿐만 아니라, 어떠한 펑션이라도 '(따옴표) 안에 넣으면 작동하지 않을 뿐더러, 반환값이 표시되지도 않습니다.
또한 펑션 바로 옆에 '(따옴표) 를 통해 메시지를 적어 넣으면 그 펑션의 반환값과 따옴표로 적은 메시지 사이에는 띄어쓰기가 무조건 하나 생깁니다.(이를 없애는 방법은 연산자 구문 에서 다룹니다.)
예제 2.
/test = tmsg(player(), player())
/test
를 입력하면 입력한 플레이어에게 "(입력한 플레이어 이름)" 이라는 메시지가 전송됩니다.
반환값이 있는 펑션은 옆에 메시지 등이 없어도 단독으로 쓰일 수 있습니다.
colorize()
colorize()
펑션은 원래 컬러 코드(&a 같은 것) 을 사용해도 색상이 적용되지 않는 메시지에 색상을 적용시켜 주는 펑션입니다.
색상 코드가 적힌 메시지(문자열)를 값으로 받고, 색상이 적용된 메시지(문자열)가 반환값이 됩니다.
예제 1.
/testcolor = msg(colorize('&a초록색'))
/testcolor
를 실행한 플레이어에게 초록색으로 "초록색" 이라는 메시지가 표시됩니다.
위 예제에서 보듯 인수가 있는 펑션도 반환값이 있다면 사용할 수 있습니다.
번외. 반환값이 비어있는 펑션을 넣으면?
API 문서의 반환 항목을 보면 반환값의 자료형을 알 수 있는데,
특정한 기능을 하는 펑션 중(msg()
와 같이) 반환값이 비어있는 펑션들이 있습니다.
이런 펑션을 넣으면 어떻게 되는지 알아보도록 하겠습니다.
/testmsg = msg(msg('Test'))
/testmsg
를 입력하면 플레이어에게 "Test" 라는 메시지가 전송된 후, "" 라는 빈 메시지가 전송된다.
반환값이 비어있고 특정한 기능을 하는 펑션을 입력하게 되면 그 입력된 펑션의 기능이 실행이 되고 반환값이 비어있기 때문에 빈 값이 반환됩니다.
즉, 펑션을 펑션 안에 넣어서 반환값을 얻는 것은 해당 펑션을 실행하고 그 결과를 얻는 것 을 의미합니다.
반환값이 어떠한 값이든 비어있든 간에 반환값이 나온다는 뜻은 그 펑션이 이미 실행되었다는 뜻이기 때문입니다.
지금 다룬 펑션들 말고도 어떠한 작업을 실행함과 동시에 특정한 반환값을 반환하는 펑션들이 아주 많습니다. 이러한 펑션들은 그 펑션의 기능을 수행하고 기눙의 결과를 반환값으로 반환하는 경우가 대부분입니다.
또한 pinfo()
처럼 인수가 무엇인가에 따라서 반환값이 정수, 문자열, 배열 등등이 되는 경우가 있기 때문에
API 문서를 잘 살펴보고 펑션을 사용하는 것이 좋습니다.
다음 추천 강좌
다음 추천 강좌에서는 변수를 이용하여 코드의 작성을 편리하게 하는 방법을 알아봅니다.