본문 바로가기
Android/Kotlin 기초

Kotlin 기초 문법 4 - 함수, 매개변수, 인자, 가변 인자

by 2Plus 2020. 5. 20.

 이번 포스팅에서는 Kotlin에서 함수를 정의하고 사용하는 방법과, 매개변수(Parameter), 인자(Argument), 기본 인자, 가변 인수에 대해 다뤄볼 예정이다.

 

 

함수 (Function)

 앞선 기초 문법 포스팅들에서 사용했던 main() 함수도 함수의 한 종류이다. 작업의 기본 단위인 함수에 대해 알아보자.

 

 

 함수는 기본적으로 위의 형태로 선언을 한다. fun 키워드와 함수 이름, scope는 함수를 선언하기 위해서는 꼭 작성해줘야 한다. 파라미터는 필요 없는 경우 생략할 수 있으며, 반환 타입도 값을 반환하지 않는다면 명시할 필요가 없다. 다만, 반환 타입을 생략할 경우에는 반환 타입이 자동으로 Unit으로 지정된다. Unit은 다른 언어에서의 void와 비슷한 개념이라고 생각하면 된다.

 

[Code]

 

 

[결과]

 

 

 위는 실제로 간단한 함수를 선언하고 사용하는 예시이다. printHello() 함수의 경우는 파라미터와 반환 타입을 생략하여 선언했다. 그렇기 때문에 별다른 인자 전달 없이 printHello() 형태의 코드 실행을 통해 해당 함수를 호출할 수 있다. add 함수의 경우는 두 수를 받아서 Int를 반환하도록 선언했다. 함수 내부 로직에서도 return을 통해 반환 타입에 맞는 값을 반환하고 있으며, 함수 호출 시에도 인자로 두 개의 Int를 전달해주고 있다.

 

 

 

 

 함수의 실행 로직이 한 줄일 경우에는 위와 같이 선언하는 것도 가능하다. return은 제외하고 반환 값을 작성하면 된다. 반환 타입을 추론할 수 있는 경우에는 두 번째 예시와 같이 반환 타입 기술을 생략할 수 있다.

 

 

매개변수(Parameter)와 인자(Argument)

 함수 선언 시 괄호 안에서 입력받을 값들을 정의해둔 것을 파라미터라고 한다. 이러한 파라미터 정의를 통해 함수 호출시 전달받아야 하는 값들을 정의해둘 수 있다. 실제로 함수를 호출할 때 괄호 안에 값을 전달하여 파라미터 변수에 할당되는 값을 인자라고 한다.

 

 

기본 인자 (Default Argument)

 함수 선언시 파라미터에 기본 값을 지정하여 값을 전달받지 않은 경우 기본 값으로 함수가 동작하도록 할 때 사용한다.

 

[Code 1]

 

 

[결과 1]

 

 

 add 함수의 printResult 파라미터가 true이면 값을 더한 결과를 출력하고, false이면 출력하지 않도록 하는 함수를 선언했다. 기본 값을 지정할 때는 위와 같이 "=" 뒤에 기본 값을 작성해주면 된다. 실제 함수 호출 시에는 기본 값이 있는 파라미터에 대해 인자를 전달하지 않아도 정상적으로 함수 호출이 진행되는 것을 확인할 수 있다.

 

 

[Code 2]

 

 

[결과 2]

 

 

 함수 호출 시 기본 값이 지정되어 있던 파라미터에 true 인자를 전달한 경우이다. true가 제대로 전달되어 동작하는 것을 확인할 수 있다.

 

 

가변 인자

 몇 개를 받을 지 모르는 경우에 매개변수를 선언해야 할 경우 가변 인자를 사용하면 된다. 가변 인자를 사용하기 위해서는 파라미터 앞에 vararg 키워드를 붙여주면 된다.

 

[Code]

 

 

[결과]

 

 

 add() 함수에서 여러 개의 Int 인자를 받아서 모두 더한 값을 반환하는 함수를 예시로 작성하였다. vararg 키워드를 파라미터 앞에 붙여주면 입력받은 여러 개의 인자가 IntArray 타입으로 전달된다.

 

 

반응형

댓글