본문 바로가기

개발

코틀린 Kotlin 다루기 (5) - 함수 (Function)

반응형

함수 (Function)

이번 편에서는 함수에 관하여 다뤄보려고 합니다.

이전 강좌부터 쓰였던 print() 같은 코드를 함수라고 합니다. 

 

함수 하고 비슷한 용어인 메소드(Method)가 있는데, 함수의 경우 독립적인 실행을 메소드의 경우 클래스 등 안에 종속된 경우에 쓰입니다. (클래스는 나중에 다뤄보겠습니다.)

이번 강좌에서는 함수라는 용어로 통일해서 사용하겠습니다.

 

먼저 Function.kt를 만들어주겠습니다.

함수의 형태

기본적인 함수의 형태는 아래와 같습니다.

fun 이름(): 반환타입 {
    // 코드
}

만약 number()이라는 함수를 사용했을 때 정수 10을 반환(return)하고 싶다면,

fun number(): Int {
    return 10
}

이렇게 쓰고 

number()

이와 같이 사용할 수 있습니다.

함수를 사용하고 특정 값을 반환하고 끝내고 싶을 때는 return 값을 사용합니다.
단독으로 return만 사용 시 반환 없이 끝냅니다.

이제 위 형태를 활용하여 5 + 5의 값을 반환하는 함수를 만들고 출력해봅시다.

fun main() {
    print("${fivePlusFive()}")
}

fun fivePlusFive(): Int {
    return 5 + 5
}
// 실행결과
// 10

5 + 5와 같이 한 줄로 줄일 수 있다면 아래와 같이 줄여 쓸 수 있습니다.

fun main() {
    print("${fivePlusFive()}")
}

fun fivePlusFive() = 5 + 5
// 실행결과
// 10

이 때는 타입을 생략할 수 있습니다.

main() 함수 역시 Kotlin에서 처음 실행 시 호출하는 함수입니다.

함수에 반환 값이 없다면?

위 예제에서는 함수에서 5 + 5의 결과를 도출하고 이 값을 이용하여 main()에서 출력해주었습니다.

이를 약간 변형하여 함수에서 바로 5 + 5 결과를 출력해봅시다.

fun main() {
    plusAndPrint()
}

fun plusAndPrint(): Unit {
    print("결과: ${5 + 5}")
}
// 실행결과
// 결과: 10

이와 같이 반환 값이 없을 경우 Unit 타입을 사용합니다. 또한 Unit은 생략할 수 있습니다.

fun main() {
    plusAndPrint()
}

fun plusAndPrint() {
    print("결과: ${5 + 5}")
}
// 실행결과
// 결과: 10

해당 함수 또한 간단하게 표현 가능합니다.

fun main() {
    plusAndPrint()
}
fun plusAndPrint() = print("결과: ${5 + 5}")
// 실행결과
// 결과: 10

 

파라미터(Parameters)

두 번째 강좌에서 main() 함수를 쓸 때 () [괄호] 안에 args: Array<String> 이러한 내용을 써주었습니다.

이는 함수 안에 정보를 전달하고 싶을 때 쓰는 파라미터입니다.

fun param(이름: 타입, 이름: 타입, 이름: 타입 ......){
    
}

위와 같이 사용할 수 있습니다.

 

응용하여 두 개의 파라미터를 받아 더하는 함수를 만들어봅시다.

fun main() {
    print("결과: ${aPlusB(1, 2)}")
}

fun aPlusB(a: Int, b: Int): Int {
    return a + b
}
// 실행결과
// 결과: 3

함수를 사용할 때 파라미터는 () [괄호] 안에 넣으며 각각의 파라미터는 , (콤마)로 구분합니다.

위 예제에서는 1과 2를 사용했는데 10, 10을 넣으면 20이 나오는 모습을 확인할 수 있습니다.

파라미터 기본값 (Default Parameters, Default Arguments)

파라미터에 값을 따로 정해주지 않아도 기본값을 정해주고 싶을 때가 있습니다.

기본값으로 특정한 수에 2를 곱해주고 원한다면 다른 수를 곱해주는 함수를 만들어봅시다.

fun main() {
    print("결과: ${numberTimesNumber(5)}")
}

fun numberTimesNumber(x: Int, y: Int = 2): Int{
    return x * y
}
// 실행결과
// 결과: 10

 

기본값은 함수에서 파라미터를 정의할 때 타입 뒤에 = 기본값 형태로 작성합니다.

위 함수의 경우 따로 y 파라미터를 주지 않으면 x * 2의 값을 반환합니다.

numberTimesNumber(5, 10)으로 사용해준다면 5 * 10의 값인 50을 반환하겠죠?

Vararg Arguments

 

Parameter은 인자, Argument는 인수라고 해석합니다.

 

가변 인수는 여러 개의 값을 넘겨줄 때 사용됩니다.

아래 형태를 봐봅시다.

fun varArg(vararg a: Int){
    
}

vararg 키워드를 사용해주면 됩니다.

해당 함수를 활용하여 넘겨준 값을 모두 더하는 함수를 만들어봅시다.

fun sum(vararg numbers: Int): Int{
    var total = 0
    
    for(number in numbers){
        total += number
    }
    
    return total
}

해당 함수에 for 키워드가 쓰였습니다. for은 반복한다는 의미를 담고 있는데 여기서는

numbers로 넘겨준 각각의 인수를 number 임시 변수에 담아 total에 더해주겠다는 의미입니다.

for에 대한 자세한 내용은 나중에 알아봅시다.

 

해당 함수를 main()에 작성해서 실행하면,

fun main() {
    print("1~5까지 더한 결과: ${sum(1, 2, 3, 4, 5)}")
}

fun sum(vararg numbers: Int): Int {
    var total = 0

    for (number in numbers) {
        total += number
    }

    return total
}
// 실행결과
// 1~5까지 더한 결과: 15

정상적으로 나오는 값을 확인할 수 있습니다.

 

마무리

이번 편에서는 함수에 대해서 알아보았습니다.

감사합니다 :D

 

 

해당 내용은 https://kotlinlang.org/docs/reference/functions.html 이곳에서 확인할 수 있습니다.

 

 

반응형