본문 바로가기
컴퓨터 언어/Kotlin

[Kotlin] 코틀린 함수 주의사항 및 오버로딩

by 웅대 2022. 11. 17.
728x90
반응형

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

fun addTwo(a:Int, b:Int):Int{
    return (a+b)
}

코틀린 함수는 지켜야할 사항들이 존재한다.

 

  • 파라미터에는 타입을 반드시 명시해야한다.
  • 리턴값이 없는 경우 리턴 타입을 명시하지 않아도 된다.
  • 파라미터에 직접적으로 접근하여 변경할 수 없다. 위의 경우 a+=1 같은 식은 작성할 수 없다.

 

한 줄 함수

위의 경우 반환값을 한 줄에 표현하고 있는데 이렇게 간단한 함수의 경우 함수 자체를 한 줄로 나타낼 수 있다.

fun addTwo(a:Int, b:Int):Int = a+b

이렇게 함수의 파라미터와 반환타입을 명시한 후에 "="을 사용하여 반환값을 주면 된다.

 

함수 오버로딩

같은 역할을 하는 함수라도 파라미터의 타입이나 반환 타입이 다를 수 있다.

 

예를 들어 무언가를 더하는 함수를 만들고 싶을 때 정수형 파라미터의 개수가 2개, 3개, 혹은 문자열끼리 서로 더하는 함수를 만들기 위해서 각각 이름을 달리하는 것은 혼동을 일으킬 수 있다.

 

이를 해결하기 위해서 함수 오버로딩을 한다면 같은 함수 이름을 사용하여 파라미터, 반환값의 형태를 바꿀 수 있다.

 

그럼 다음과 같은 역할을 수행하는 함수를 오버로딩하는 방법을 알아보겠다.

 

  1. 정수형 파라미터 두 개를 받아서 더한 값을 출력
  2. Double형 파라미터 두 개를 받아서 더한 값을 출력
  3. 문자열 파라미터 두 개를 받아서 둘 사이에 빈 칸을 두고 이어붙인 값을 출력
fun add(a:Int, b:Int):Int=(a+b)
fun add(a:Double, b:Double):Double=(a+b)
fun add(a:String, b:String):String=("$a $b")

그냥 이름만 동일하게 정의하면 끝이다.

 

함수의 가시성

함수를 정의할 때 fun 앞에 가시성을 정할 수 있다.

ex) public fun add(...)...

  1. public : 프로젝트의 어느 곳에서든 호출할 수 있다.
  2. private : 같은 파일 안에서만 호출할 수 있다.
  3. internal : 같은 모듈 안에서 호출할 수 있다.

 

728x90
반응형

댓글