언어(Language)/Kotlin

[Kotlin] 코틀린 함수(Function) 개념 및 예제

잇트루 2023. 10. 31. 23:09
반응형
💡 함수(function)는 이름이 있는 작은 프로그램과 같으며, 다른 함수에서 그 이름으로 실행하거나 호출(invoke)할 수 있다.

 

함수(Function)

함수는 일련의 동작을 묶어주며, 프로그램을 체계적으로 구성하고 코드를 재사용하는 가장 기본적인 방법이다. 함수에 정보를 전달하면, 함수는 그 정보를 이용해 계산을 수행하고 결과를 만들어낸다.

코틀린 함수의 기본적인 형태는 다음과 같다.

fun 함수이름(p1: 타입1, p2: 타입2, ...): 반환타입 {
    구현할 코드...
    return 결과
}
  • p1과 p2는 함수에 전달할 파라미터(parameter)다. 각 파라미터는 괄호 안에 식별자와 타입으로 구성되어 있으며, 콜론(:)으로 구분한다.
  • 파라미터 뒤에 함수가 생성할 결과의 타입을 나타내는 반환 타입을 명시한다. 만약, 반환 타입이 없는 경우 생략 가능하다.
  • 이후 처리할 코드가 담긴 부분을 함수 본문(function body)은 중괄호로 감싼다.
  • 반환 타입이 있는 경우 함수 본문 마지막에 return 키워드를 통해 결과를 반환한다.

 

파라미터는 함수에 정보를 전달하는 방법을 정의한다. 즉, 함수에 전달할 정보를 넣을 장소다. 인자(argument)는 함수에 전달하는 실제 값이다. 이름, 파라미터, 반환 타입 모두를 함수 시그니처(function signature)라 한다.

 

 

함수 사용 예제

다음은 multiplyByTwo()라는 간단한 함수로 입력받은 인자에 2를 곱하는 결과를 반환하는 함수다.

fun multiplyByTwo(x: Int): Int {
    println("multiplyByTwo 함수 실행")
    return x * 2
}

fun main() {
    val result = multiplyByTwo(5)
    println(result)
}
// 출력
multiplyByTwo 함수 실행
10
  • multiplyByTwo() 함수는 Int 타입의 파라미터 x를 입력받아 Int 타입의 결과를 반환한다.
  • 메인 함수에서 multiplyByTwo(5)를 호출하고 결과를 result 변수에 담는다.
  • result 출력하면 5에서 2를 곱한 10이 출력된다.

 

💡 println(result)도 함수 호출이다. println() 함수는 코틀린에서 제공하는 함수다. 이처럼 코틀린에서 기본적으로 정의한 함수는 표준 라이브러리 함수라고 부른다. 표준 라이브러리는 코틀린에서 미리 정의한 클래스, 함수 등의 여러 구현체들의 모음이다.

 

다음은 반환 타입이 없는 함수 예시다.

fun sayHello() {
    println("Hello!")
}

fun sayGoodBye() : Unit {
    println("Good Bye!")
}

fun main() {
    sayHello()
    sayGoodBye()
}
// 출력
Hello!
Good Bye!
  • sayHello() 함수와 sayGoodBye() 함수는 모두 반환 타입 Unit이다.
  • Unit 타입은 반환 타입이 없다는 것을 의미한다.
  • 반환 타입이 없는 경우 sayHello() 함수처럼 생략 가능하다.

 

코틀린 함수는 본문이 하나의 식으로만 구성된 경우, 등호(=)를 사용하여 함수를 짧게 작성할 수 있다.

fun 함수이름(p1: 타입, p2: 타입, ...): 반환타입 = 식
  • 중괄호로 둘러싸인 경우를 블록 본문(block body)이라 하고, 등호 뒤에 식이 본문으로 지정된 경우를 식 본문(expression body)이라 한다.

 

다음은 multiplyByThree() 함수로 식 본문을 사용하는 경우다.

fun multiplyByThree(x: Int): Int = x * 3

fun main() {
    println(multiplyByThree(5))
}
// 출력
15
  • 식 본문은 중괄호와 return 키워드를 생략하고 등호(=)를 통해 표현한다.

 

식 본문을 사용하는 경우 함수의 반환 타입이 생략 가능하다.

fun multiplyByFour(x: Int) = x * 4

fun main() = println(multiplyByFour(5))
// 출력
20
  • 코틀린은 multiplyByFour() 함수의 반환 타입이 Int라고 추론한다.
  • 코틀린은 식 본문으로 구성된 함수의 반환 타입만 추론한다. 블록 본문으로 구성된 경우 반환 타입을 지정하지 않으면 Unit이라고 지정한 것과 같다.
  • 메인 함수 또한 식 본문으로 구성할 수 있다.

 

 

참고 서적

https://link.coupang.com/a/beyKYH

 

아토믹 코틀린:코틀린 컴파일러 개발자가 알려주는 코틀린 기본기 87

COUPANG

www.coupang.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형