4) 함수

SOCICAL·2024년 6월 20일

android

목록 보기
18/20
post-thumbnail

# 기본 함수 선언

Kotlin에서 함수는 특정 동작을 수행하거나 결과 값을 반환하는 데 사용된다.
fun 키워드를 사용하여 정의하며, 매개변수와 반환 타입을 지정할 수 있다.

fun add(a: Int, b: Int, c: Int): Int {
    return a + b + c
    // return 문이 실행되면 함수는 즉시 종료됩니다.
}

fun main() {
    println(add(5, 6, 7)) // 출력: 18
}

# 단일 표현식 함수

단일 표현식 함수는 간단한 연산을 수행할 때 사용되며, 반환 타입을 생략할 수 있다. 컴파일러가 반환 타입을 추론한다.

fun add(a: Int, b: Int, c: Int) = a + b + c

fun main() {
    println(add(5, 6, 7)) // 출력: 18
}

# 기본값 매개변수

매개변수에 기본값을 지정하여 함수 호출 시 특정 매개변수를 생략할 수 있다.

fun greet(name: String = "World") {
    println("Hello, $name!")
}

fun main() {
    greet() // 출력: Hello, World!
    greet("Kotlin") // 출력: Hello, Kotlin!
}

# 명명된 인자

함수를 호출할 때 인자의 이름을 명시하여 순서에 상관없이 값을 전달할 수 있다.

fun displayDetails(name: String, age: Int) {
    println("Name: $name, Age: $age")
}

fun main() {
    displayDetails(age = 25, name = "Alice")
}

# 고차 함수와 람다식

- 고차 함수

함수를 인자로 받거나 반환하는 함수이다.

fun higherOrderFunction(operation: (Int, Int) -> Int, a: Int, b: Int): Int {
    return operation(a, b)
}

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

fun main() {
    val sum = higherOrderFunction(::add, 5, 6)
    println(sum) // 출력: 11
}

- 람다식

익명 함수로, 간결하게 함수를 표현할 수 있다.

val sumLambda: (Int, Int) -> Int = { x, y -> x + y }

fun main() {
    println(sumLambda(5, 6)) // 출력: 11
}

- 람다식에서 it 키워드 사용

람다식에서는 파라미터가 하나일 때 it 키워드를 사용할 수 있다.

val square: (Int) -> Int = { it * it }

fun main() {
    println(square(5)) // 출력: 25
}

- 고차 함수에서 기본값 사용

고차 함수에서 기본값을 사용할 수도 있다.

fun higherOrderFunction(operation: (Int, Int) -> Int = { x, y -> x + y }, a: Int, b: Int): Int {
    return operation(a, b)
}

fun main() {
    val sum = higherOrderFunction(a = 5, b = 6) // 기본값인 덧셈 연산자 사용
    println(sum) // 출력: 11
}

- 람다와 고차 함수의 실제 사용 예시

람다와 고차 함수는 컬렉션 처리에 많이 사용된다. 예를 들어, map, filter, reduce 등의 함수이다.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)

    val doubled = numbers.map { it * 2 }
    println(doubled) // 출력: [2, 4, 6, 8, 10]

    val even = numbers.filter { it % 2 == 0 }
    println(even) // 출력: [2, 4]

    val sum = numbers.reduce { acc, i -> acc + i }
    println(sum) // 출력: 15
}

# 확장 함수

Kotlin에서는 기존 클래스에 새로운 함수를 추가활 수 있는 확장 함수를 지원한다.

fun String.removeWhitespace(): String {
    return this.replace(" ", "")
}

fun main() {
    val text = "Hello Kotlin"
    println(text.removeWhitespace()) // 출력: HelloKotlin
}

# 인라인 함수

인라인 함수는 성능을 최적화하기 위해 사용되며, 함수 호출을 인라인으로 대체 한다.

inline fun performOperation(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

fun main() {
    val result = performOperation(3, 4) { x, y -> x + y }
    println(result) // 출력: 7
}

0개의 댓글