지금까지 상수와 변수를 생성하여 값을 저장하고 사용하는 방법, if 표현식과 and , or 같은 결정 연산자를 사용하여 코드에서 결정을 내리는 방법을 배웠습니다.
이제 프로그램에서 손쉽게 재사용할 수 있는 코드를 작성하는 방법을 알아볼 차례입니다.
2강에서 표현식 이 결과를 도출하는 코드의 최소 유닛이며, 표현식이 실행 되어 값이 출력되면 이 출력된 값을 결과 라고 한다는 것을 배웠습니다.
이를 활용하여 코드를 보다 효율적으로 만들 수 있습니다.
표현식을 다른 표현식과 결합하여 함수 를 생성할 수 있으며, 함수는 매번 수행하는 작업을 재작성하지 않아도 코드에서 반복해서 사용할 수 있습니다.
함수에서 표현식 사용하기
루틴 이라고도 하는 함수 는 재사용 가능한 코드로, 액션을 수행하거나 입력에 기반하여 출력을 생성하기 위한 인스트럭션을 제공합니다.
함수는 결합된 표현식 으로 구성됩니다.
함수를 정의하려면 다음 요소가 필요합니다.
- 고유한 이름, 즉 식별자
- 결과를 도출할 정보의 타입
- 함수가 호출되었을 때 수행 할 작업
함수의 기본 구문은 다음과 같습니다.
name() : type =
코드 블록
다음 수업에서 코드 블록에 대해 자세히 알아볼 것이며, 지금은 코드 블록이 함수를 빌드하는 데 사용하는 표현식을 넣을 곳이라는 사실만 알면 됩니다.
함수와 함수 호출
함수 는 기본적으로 이름을 붙인 일련의 표현식 모음 입니다.
프로그램에서 함수를 사용하려면 함수의 이름을 통해 함수를 호출 합니다. 함수 호출은 함수를 인보크(invoke) (활성화)합니다. 이것이 함수 호출(function call) 입니다.
함수에 넣은 모든 표현식을 반복해서 작성하는 대신, 여러 표현식을 하나의 명명된 함수로 묶어 프로그램이 함수를 호출할 때마다 컴퓨터가 함수를 참조해 안에 있는 표현식을 실행할 수 있다는 의미입니다.
예를 들어 CoinsPerMousetrap 이 항상 100 이라는 값을 가지는 대신, 실행할 때마다 랜덤 값을 선택하여 값을 변경하는 코드를 작성할 수 있습니다.
아래 예시의 표현식은 GetRandomInt(1, 10) 표현식을 사용하여 1~10 사이의 랜덤 수를 생성하도록 설정되었습니다.
표현식을 분석하면 다음과 같습니다.
GetRandomInt() |
Verse의 내장 함수로, 이름 그대로 랜덤 integer를 생성합니다. |
1, 10 |
integer를 생성할 숫자의 범위를 나타냅니다. 20, 50 을 사용하면 20~50의 범위 내에서 숫자를 생성합니다. 범위는 표현식 이름의 일부인 () 안에 입력합니다. |
이것은 1~10 사이의 범위에서 랜덤 integer를 생성하는 함수를 호출하라고 컴퓨터에게 알리는 함수 호출 입니다.
코드에서 함수 를 사용하려면 함수를 이름 으로 호출해야 합니다. GetRandomInt() 를 호출할 때마다 새로운 랜덤 숫자가 생성됩니다.
쥐덫의 가격을 랜덤하게 변경하려면 다음과 같이 함수를 사용할 수 있습니다.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Random }
OnBegin<override>()<suspends> : void =
# Coins를 500으로 초기화합니다. 변수이므로 나중에 변경할 수 있습니다.
var Coins : int = 500
# CoinsPerMousetrap을 1~100 사이의 랜덤 integer로 초기화합니다.
CoinsPerMousetrap : int = GetRandomInt(1, 100)
# Coins의 현재 값(500)을 로그에 출력합니다.
Print("Coins starts at {Coins}.")
# Coins를 CoinsPerMousetrap만큼 줄이고 새 값을 로그에 출력합니다.
set Coins = Coins - CoinsPerMousetrap
Print("After buying one mousetrap, Coins is {Coins}.")
예시 코드의 거의 모든 줄에 코드가 무슨 작업을 하는지 설명하는 코멘트가 있는 것을 살펴보세요. 시간이 흐른 뒤 자신의 코드를 다시 볼 때도 도움이 되고, 다른 프로그래머가 코드를 추가하거나 수정할 때도 도움이 됩니다.
메서드
2강에서 타입이 변수 또는 상수에 저장된 값에서 수행될 연산을 어떻게 정의하는지 배웠던 것을 기억하시나요? 타입의 기능은 그 밖에 또 있습니다.
타입에 속한 연산이 있듯이, 타입에 속한 함수도 있습니다. 이러한 함수를 메서드(method) 라고 합니다. 메서드는 특수한 방식으로 호출되어야 합니다.
메서드 호출 을 할 때는 Print() 나 GetRandomInt() 처럼 이름만 사용하여 호출하지 않고, 변수(또는 상수)의 이름으로 시작하고 그 뒤에 . 를 붙인 다음 메서드의 이름을 넣어야 합니다. 예를 들어 변수 Cat 에서 메서드 Pounce() 를 호출하면 다음과 같습니다.
Cat.Pounce()
클래스
클래스 는 유사한 행동과 프로퍼티를 갖는 것들을 생성하는 데 사용되는 템플릿입니다. 클래스는 복합(composite) 타입입니다. 다른 타입들의 데이터를 합친 것으로 이루어진다는 뜻입니다.
클래스를 정의하면 해당 클래스의 데이터는 모든 서브클래스(subclass) 에서 상속(inherit) 할 수 있습니다.
메서드는 클래스에 어태치되는 함수입니다. 따라서 모든 메서드가 모든 타입에서 작동하는 것은 아닙니다. 메서드는 해당 타입의 클래스 정의 또는 해당 타입이 상속받는 클래스에서 선언되어야 합니다. 무슨 말인지 잘 모르겠더라도 걱정하지 마세요. 일단은 간단하게 설명했지만 나중에 클래스에 대해 더 자세히 배울 것입니다.
요약
- 함수 는 재사용 가능한 명명된 일련의 표현식입니다.
- 함수는 루틴 이라고도 합니다.
- 함수는 시간을 절약하고 오류를 줄입니다. 같은 코드를 여러 줄 반복적으로 입력(또는 유지)할 필요가 없기 때문입니다.
- 코드 줄에서 함수를 재사용하려면 함수 호출 을 하면 됩니다.
- 메서드 는 특정 타입에 속하는 함수이며, 반드시 해당 타입의 변수 또는 상수에서 호출되어야 합니다.
- 클래스 는 다른 타입들의 데이터를 결합하고 동작과 프로퍼티를 서브클래스 와 공유할 수 있는 복합 타입입니다.