본문 바로가기
쿤즈 Dev/Kotlin

[Kotlin] 함수의 사용(2): 반환값이 없는 함수, 매개변수 활용

by :)Koon 2022. 5. 19.

지난 포스팅에서는 코틀린에서 함수를 사용하는 방법에 대해서 알아보았습니다.

2022.05.18 - [쿤즈 Dev/Kotlin] - [Kotlin] 함수의 사용(1): 간단하게 함수 만들고 사용하기

 

[Kotlin] 함수의 사용(1): 간단하게 함수 만들고 사용하기

코틀린을 사용하기 위해서 지난 포스팅에서는 변수를 선언하는 방법과 연산자를 사용하는 방법에 대해서 알아보았습니다. 이번 포스팅에서는 함수를 만들고 사용하는 방법에 대해서 알아볼게

koonsland.tistory.com

간단하게 함수를 만들고 사용하는 방법을 알아보았으니 함수에 대해서 조금 더 자세하게 알아볼게요.

이번 포스팅에서는 반환값이 없은 함수와 매개변수에 대해서 알아보겠습니다.


반환값이 없는 함수

반환값이 없는 함수는 Unit이라는 키워드를 사용합니다. 하지만 코틀린은 자료형을 추론할 수 있기때문에 생략할 수도 있습니다.

package `03`

// 반환값이 없음을 표현하기 위해 Unit 사용
fun printlnSum(a: Int, b: Int): Unit = println("${a+b}")

// Unit을 사용하지 않아 자료형 추론
fun printlnSub(a: Int, b: Int) = println("${a-b}")

fun main(args: Array<String>) {
    printlnSum(10, 3)
    printlnSub(10, 3)
}

Unit이라는 자료형은 Java에서 void와 비슷합니다. 반환값이 없다는 것을 의미합니다. Unit 자료형을 생략하고 반환값이 없다면 자동으로 Unit으로 추론됩니다. void는 자바에서 아무것도 없음을 의미하지만 코틀린의 Unit이라는 객체를 반환합니다. 이는 추후 조금 더 자세하게 알아볼게요.


매개변수의 활용

앞선 예제들과 앞선 포스팅에서의 매개변수는 모두 Int 자료형이었습니다. 이번에는 문자열 자료형을 사용해 볼게요.

package `03`

// 문자열 매개변수
fun concat(lastname:String, firstname: String) = lastname + firstname
// 매개변수 기본값
fun defaultConcat(lastname:String, firstname:String = "land") = lastname + firstname
// 여러 인자 매개변수
fun vararg(vararg value: String): String {
    var text: String = ""
    for (v in value)
        text += v
    return text
}

fun main(args: Array<String>) {
    println(concat("Koons", "land"))
    println(defaultConcat("Koons"))
    println(concat(firstname = "land", lastname = "Koons"))
    println(vararg("K", "o", "o", "n", "s", "l", "a", "n", "d"))
}

매개변수에는 String 값이 들어가도록 한 예제입니다. 먼저 concat() 함수는 두 문자열을 받아서 합쳐서 return하는 함수입니다. 다음 defaultConcat() 함수는 firstname의 기본값으로 "land"를 입력받습니다. 만약 firstname을 입력받지 않으면 "land"라는 글자가 기본값으로 대입됩니다.

 

concat() 함수에서 인자를 넣을때 매개변수에 이름을 입력하면 인자의 순서를 변경할 수 있습니다. 마지막으로 vararg() 함수는 동일한 자료형 여러개를 받을 수 있습니다. 몇 개 인지 알 수 없을때 유용하게 사용할 수 있습니다. 이를 가변인자라 합니다.


이번 포스팅에서는 Unit이라는 자료형과 매개변수를 여러가지 방법으로 활용하는 방법에 대해서 알아보았습니다. 다음 포스팅에서는 실제 함수들이 어떻게 사용되는지 알아보도록 하겠습니다. 도움이 되셨으면 합니다. 이상입니다.

댓글