함수 정의와 호출 - swkim0128/PARA GitHub Wiki

다음은 코틀린에서 함수 정의와 호출에 대한 설명입니다.

코틀린에서 함수는 fun 키워드를 사용하여 정의합니다. 함수는 코드의 재사용성을 높이고 가독성을 향상시킵니다.

함수 정의

기본 문법

fun 함수이름(매개변수: 타입): 반환타입 {
    // 함수 본문
}
  • fun: 함수 정의 키워드.
  • 함수이름: 함수의 이름.
  • 매개변수: 함수 호출 시 전달받는 값. 타입을 지정해야 함.
  • 반환타입: 함수가 반환하는 값의 타입. 반환값이 없을 경우 Unit을 사용하거나 생략 가능.

함수 정의 예제

1. 반환값이 있는 함수

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

2. 반환값이 없는 함수

  • 반환 타입을 Unit으로 지정하거나 생략할 수 있습니다.
fun greet(name: String) {
    println("Hello, $name!")
}

3. 기본값을 가진 매개변수

  • 매개변수에 기본값을 지정하여 함수 호출 시 선택적으로 값을 전달할 수 있습니다.
fun greet(name: String = "Kotlin") {
    println("Hello, $name!")
}

4. 단일 표현식 함수

  • 함수 본문이 단일 표현식일 경우, 중괄호 {}를 생략하고 =로 표현할 수 있습니다.
fun multiply(a: Int, b: Int): Int = a * b

함수 호출

기본 호출

  • 함수를 호출할 때는 함수 이름과 매개변수를 사용합니다.
fun main() {
    println(add(5, 3)) // 출력: 8
    greet("Alice")     // 출력: Hello, Alice!
}

위치 기반 매개변수 전달

  • 매개변수는 함수 정의에 나열된 순서대로 값을 전달합니다.
greet("Bob") // name = "Bob"

이름 기반 매개변수 전달

  • 매개변수 이름을 명시적으로 지정하여 값을 전달할 수 있습니다.
greet(name = "Charlie") // name = "Charlie"

고차 함수와 람다

코틀린에서는 함수를 매개변수로 전달하거나 반환할 수 있습니다.

고차 함수

  • 함수를 매개변수로 받거나 반환하는 함수.
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

fun main() {
    val result = calculate(5, 3) { x, y -> x + y }
    println(result) // 출력: 8
}

람다 표현식

  • 익명 함수를 간결하게 표현.
val add: (Int, Int) -> Int = { x, y -> x + y }
println(add(5, 3)) // 출력: 8

인라인 함수

인라인 함수는 고차 함수 호출 시 런타임 비용을 줄이기 위해 사용됩니다.

inline fun execute(action: () -> Unit) {
    action()
}

fun main() {
    execute { println("Hello, Inline Function!") }
}

가변 매개변수 (vararg)

하나의 매개변수에 여러 값을 전달할 수 있습니다.

fun printAll(vararg numbers: Int) {
    for (num in numbers) {
        println(num)
    }
}

fun main() {
    printAll(1, 2, 3, 4, 5)
}

함수 타입과 반환값

함수 타입

• 함수는 특정 타입으로 정의할 수 있습니다.

val operation: (Int, Int) -> Int = ::add
println(operation(5, 3)) // 출력: 8

반환값이 없는 함수

  • 반환값이 없으면 Unit을 사용하거나 생략합니다.
fun printMessage(message: String): Unit {
    println(message)
}

확장 함수

  • 기존 클래스에 새로운 함수를 추가할 수 있습니다.
fun String.addExclamation(): String {
    return this + "!"
}

fun main() {
    println("Hello".addExclamation()) // 출력: Hello!
}

요약

  • 코틀린에서 함수는 fun 키워드를 사용하여 정의.
  • 함수의 매개변수와 반환 타입은 명시적으로 지정.
  • 함수 호출 시 위치 기반 또는 이름 기반으로 값을 전달 가능.
  • 고차 함수와 람다를 활용해 함수형 프로그래밍 가능.
  • 확장 함수로 기존 클래스의 기능을 확장 가능.

이 가이드를 통해 코틀린의 함수 정의와 호출 방식을 효율적으로 이해하고 활용할 수 있습니다.

⚠️ **GitHub.com Fallback** ⚠️