함수 정의와 호출 - swkim0128/PARA GitHub Wiki
다음은 코틀린에서 함수 정의와 호출에 대한 설명입니다.
코틀린에서 함수는 fun 키워드를 사용하여 정의합니다. 함수는 코드의 재사용성을 높이고 가독성을 향상시킵니다.
fun 함수이름(매개변수: 타입): 반환타입 {
// 함수 본문
}
- fun: 함수 정의 키워드.
- 함수이름: 함수의 이름.
- 매개변수: 함수 호출 시 전달받는 값. 타입을 지정해야 함.
- 반환타입: 함수가 반환하는 값의 타입. 반환값이 없을 경우 Unit을 사용하거나 생략 가능.
fun add(a: Int, b: Int): Int {
return a + b
}
- 반환 타입을 Unit으로 지정하거나 생략할 수 있습니다.
fun greet(name: String) {
println("Hello, $name!")
}
- 매개변수에 기본값을 지정하여 함수 호출 시 선택적으로 값을 전달할 수 있습니다.
fun greet(name: String = "Kotlin") {
println("Hello, $name!")
}
- 함수 본문이 단일 표현식일 경우, 중괄호 {}를 생략하고 =로 표현할 수 있습니다.
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!") }
}
하나의 매개변수에 여러 값을 전달할 수 있습니다.
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 키워드를 사용하여 정의.
- 함수의 매개변수와 반환 타입은 명시적으로 지정.
- 함수 호출 시 위치 기반 또는 이름 기반으로 값을 전달 가능.
- 고차 함수와 람다를 활용해 함수형 프로그래밍 가능.
- 확장 함수로 기존 클래스의 기능을 확장 가능.
이 가이드를 통해 코틀린의 함수 정의와 호출 방식을 효율적으로 이해하고 활용할 수 있습니다.