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 }