상세 컨텐츠

본문 제목

[Kotlin] 함수(Function)

Programming language/Kotlin

by choiDev 2020. 12. 4. 18:00

본문

함수란?

 - 특정 작업을 수행하는 재사용 가능한 코드

 - 흔히 사용하는 printf()를 함수라고 부른다

 - 함수는 크게 함수 (몸통, 헤더)로 나누어진다.

그림) 함수 헤더, 함수 몸통

 

함수 헤더

  - 함수 헤더는 다섯개 부분으로 구성

  - (가시성 제한자, 함수 선언 키워드, 함수 이름, 함수 매개변수, 반환타입) 으로 구성된다.

  - Kotlin에서 기본적으로 함수의 가시성 제한자는 public이며 가시성 제한자를 설정하지 않은 경우 
    public으로 설정된다.

  - 함수는 0개 이상의 매개변수를 가질 수 있다.

 

그림) 함수 헤더 구조

 

함수 몸체

  - 함수 헤더 다음 중괄호({})를 사용하여 함수 몸체를 정의한다.

  - 함수 몸체 내에서 선언된 변수는 지역변수 (local variable)이라고 하며 선언된 함수 내에서만 
    사용이 가능하다.

 

함수 호출 예제

   - 아래 예제는 makeHelloWorld라는 함수를 호출하는 예제이다.

fun main(args:Array<String>){
    print(makeHelloWorld("Choi"))
}
fun makeHelloWorld(name: String):String{
    return "$name hello world!"
}

 

함수 기본 인자

  - 때로는 함수 매개변수가 기본값을 갖는다 

 [기본 인자 예제1]

fun main(args:Array<String>){
    print(makeHelloWorld("Choi"))
    print(makeHelloWorld())
}

//makeHelloWorld의 name이라는 매개변수는 "Kim"이라는 기본 인자를 가지고 있다.
fun makeHelloWorld(name: String ="Kim"):String{
    return "$name hello world!"
}

[기본 인자 예제2]

fun main(args:Array<String>){
    //함수의 매개변수 순서에 맞게 실행한 경우
    print(makeHelloWorld(3))
    
    //함수의 매개변수 순서와는 틀리지만 
    //매개변수 이름을 명시하여 실행한 경우 
    print(makeHelloWorld(name="Choi",age=28))
}
fun makeHelloWorld(age:Int,name: String ="Kim"):String{
    return "$name hello world!"
}

 

단일 표현식 함수

  - Kotlin은 하나의 표현식만 갖는 함수를 정의하는데 필요한 코드 양을 줄일 수 있게 해준다.

  - 단일 표현식에선 (반환타입, 몸체 중괄호, return문)등을 생략할 수 있다.

fun main(args:Array<String>){
    print(makeHelloWorld(3))
}

//단일 표현식
fun makeHelloWorld(age:Int,name: String ="Kim") = "$name hello world!"

 

Unit 함수

  - 함수가 실행만 하고 아무런 반환값이 없을때 Unit 반환 타입을 사용한다.

  - Java의 void와 동일한 역할을 한다.

fun main(args:Array<String>){
    printLog()
}

fun printLog() {
    println("Log를 실행했습니다~!")
} 

 

함수 오버로딩 (Function Overloading)

   - 함수의 이름은 같지만 (매개변수의 갯수, 타입)이 다른 것으로 여러개의 함수를 구현하는 것

   - 아래 예제를 보면 printLog()라는 함수가 2개가 있지만 (매개변수의 갯수, 타입)이 다른 것을 확인 할 수 있다. 

fun main(args:Array<String>){
    printLog()
    printLog("Log를 실행했습니다")
}

fun printLog() {
    println("Log를 실행했습니다~!")
}

fun printLog(msg:String) {
    println(msg)
}

 

 

익명 함수와 함수타입은 다음 포스팅에서 다루겠습니다.

'Programming language > Kotlin' 카테고리의 다른 글

[Kotlin] 문자열  (0) 2020.12.05
[Kotlin] 익명 함수와 함수 타입  (1) 2020.12.05
[Kotlin] 조건문과 조건식 (If, When, In)  (0) 2020.09.24
[Kotlin] Null 안전과 예외  (0) 2020.09.24
[Kotlin] 객체 타입 체크(is)  (0) 2020.09.24

관련글 더보기