코틀린 함수

코틀린 함수 완벽 정리

코틀린의 함수는 코드 재사용성을 높이고 프로그램을 구조적으로 관리할 수 있게 해준다.
fun 키워드를 사용하며, 매개변수와 반환값을 명확하게 정의할 수 있다.


함수 기본 구조

fun 함수이름(매개변수: 타입): 반환타입 {
// 실행할 코드
return 반환값
}

예시

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

반환값이 없는 함수 (Unit)

반환값이 없을 경우 Unit 타입을 사용하며, 생략도 가능하다.

fun printMessage(message: String): Unit {
println(message)
}

아래처럼 간단히 쓸 수도 있다.

fun printMessage(message: String) {
println(message)
}

표현식 본문 함수 (한 줄짜리 함수)

한 줄로 결과를 반환하는 함수는 중괄호 {} 대신 =를 사용한다.

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

반환타입 추론

위 코드처럼 반환타입을 생략하면 코틀린이 자동으로 추론한다.
a + bInt이므로 반환타입은 Int로 인식된다.


매개변수 기본값

함수의 매개변수에 기본값을 지정할 수 있다.

fun greet(name: String = "게스트") {
println("안녕하세요, $name님!")
}
greet() // 출력: 안녕하세요, 게스트님!
greet(“재은”) // 출력: 안녕하세요, 재은님!

명명된 인자 (Named Argument)

호출 시 인자의 이름을 명시하면 순서를 바꾸어도 된다.

fun printInfo(name: String, age: Int) {
println("이름: $name, 나이: $age")
}
printInfo(age = 25, name = “재은”)

반환 타입이 여러 개일 때

코틀린은 여러 값을 한 번에 반환할 수 없지만,
Pair, Triple, 혹은 data class를 사용해 묶어서 반환할 수 있다.

fun getUserInfo(): Pair<String, Int> {
return Pair("재은", 25)
}
val (name, age) = getUserInfo()
println($name, $age“)

가변 인자 함수 (vararg)

vararg 키워드를 사용하면 매개변수 개수가 가변적인 함수를 만들 수 있다.

fun printAll(vararg messages: String) {
for (msg in messages) {
println(msg)
}
}
printAll(“안녕”, “코틀린”, “재미있다”)

지역 함수 (Local Function)

함수 내부에 또 다른 함수를 정의할 수 있다.
내부 로직을 분리하고 코드 가독성을 높이는 데 유용하다.

fun outerFunction(x: Int) {
fun innerFunction(y: Int): Int {
return y * y
}
println(innerFunction(x))
}
outerFunction(3) // 출력: 9

확장 함수 (Extension Function)

기존 클래스에 새로운 기능을 추가할 때 사용한다.

fun String.addPrefix(prefix: String): String {
return prefix + this
}
println(“Kotlin”.addPrefix(“Hello, “)) // 출력: Hello, Kotlin

고차 함수 (Higher-Order Function)

함수를 인자로 받거나 반환값으로 반환할 수 있다.

fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operate(3, 4) { x, y -> x + y }
println(result) // 출력: 7

람다 표현식 (Lambda Expression)

람다는 익명 함수를 간결하게 표현하는 방식이다.

val add = { a: Int, b: Int -> a + b }
println(add(2, 3)) // 출력: 5

인라인 함수 (Inline Function)

자주 호출되는 고차 함수를 최적화하기 위해 inline 키워드를 사용할 수 있다.

inline fun runOperation(operation: () -> Unit) {
operation()
}
runOperation { println(“인라인 함수 실행!”) }

함수 요약 비교표

형태 키워드 특징
일반 함수 fun 기본적인 함수 정의
표현식 함수 = 한 줄 반환 시 사용
가변 인자 vararg 인자 개수 제한 없음
확장 함수 fun Type.name() 기존 클래스 확장
고차 함수 (Int) -> Int 함수를 인자로 받음
인라인 함수 inline 성능 최적화

게시됨

카테고리

작성자

태그:

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다