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

2022. 11. 17. 12:00·컴퓨터 언어/Kotlin
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

'컴퓨터 언어 > Kotlin' 카테고리의 다른 글

[Kotlin] 범위 표현의 방법과 in과 when과의 활용  (0) 2022.11.19
[Kotlin] 조건문 사용법 및 한 줄 조건문  (0) 2022.11.18
[Kotliln] 배열 사용법과 주의사항  (0) 2022.11.16
[Kotlin] 문자열의 표현과 출력, raw string  (0) 2022.11.15
[Kotlin] 변수의 선언, 타입 추론  (0) 2022.11.14
'컴퓨터 언어/Kotlin' 카테고리의 다른 글
  • [Kotlin] 범위 표현의 방법과 in과 when과의 활용
  • [Kotlin] 조건문 사용법 및 한 줄 조건문
  • [Kotliln] 배열 사용법과 주의사항
  • [Kotlin] 문자열의 표현과 출력, raw string
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ChatPromptTemplate
    Vector Store
    binary search
    RNN
    bfs
    embedding
    parametric search
    nn.RNN
    Merge
    ci/cd
    파이썬
    openvidu 배포
    스프링 OAuth2
    다익스트라
    푸쉬 알람
    AWS Lambda
    influxDB CLI
    codetree
    code tree
    스택
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Kotlin] 코틀린 함수 주의사항 및 오버로딩
상단으로

티스토리툴바