일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- OnlineIDE
- ci/cd
- 네이버클라우드
- 데이터 직렬화 포맷
- 3D
- 코틀린개발환경
- NAS HDD교체
- nas
- octoprint
- 3D모델링
- docker
- git
- linux job
- 3D 프린터 용어
- gitlab
- IoTNetwork
- github
- 3D프린터
- 3d프린터 초보
- data serialization formats
- 3D프린터 입문
- 3D프린터입문
- docker container
- C언어
- Jenkins
- 리눅스 파일동기화
- Notification
- Token인증방식
- Kotlin
- kubernetes
- Today
- Total
0과 1을 공부하다.
[Kotlin] 코틀린 함수 본문
코틀린에서 사용하는 함수(Function)에 대해 알아보고 간단한 사용법에 대해 기술한다.
코틀린에서 특정 작업을 수행하고, 필요에 따라 값을 반환하는 코드 블록 그리고 프로그램의 논리적 단위를 나누고, 코드의 재사용성과 가독성을 높이는 데 중요한 역할 을 하는 것을 함수(Function) 라고 부른다.
자바에 익숙한 사람들은 명칭이 조금 익숙하지 않을 수도 있다. 자바에서는 메소드(Method)라고 불러왔으니 조금 익숙하지 않을 수 있다. 코틀린에서는 주로 함수라고 부르니 본 게시물을 포함하여 모든 기능을 함수라고 명칭한다
일반 함수 선언 및 사용
: 코틀린에서 사용하는 가장 기본적인 형태의 함수이다.
// Top-Level Function
fun sum(a: Int, b: Int, c: Int = 0) : Int { // 추론이 가능하면 리턴타입 생략 가능
return a + b
}
fun sumLine(a: Int, b: Int) : Int = a + b // 한줄표현 가능
fun main() {
println(sum(10,20))
println(sum(a = 10, b = 20))// 파라미터를 명시적으로 지정할 수 있음.
println(sumLine(30,40))
}
같은 타입의 여러 파라미터 받기 (가변인자) -> vararg를 사용한다.
fun main() {
printAll("a", "b", "c") // 콤마(,)로 구분하여 전달
println()
val stringArray = arrayOf("d", "e", "f")
printAll(*stringArray) // 배열로 전달. (앞에 * 기호 넣어야한다.)
}
fun printAll(vararg strings: String)
{
for (str in strings){
println(str)
}
}
익명함수 (Anonymous Function)
: 익명 함수는 이름이 없는 함수를 뜻한다. 람다 함수와 유사하지만, 더 명확한 타입과 리턴을 지정할 수 있다. 익명 함수는 필요할 때 직접 정의하여 사용할 수 있다.
val anonymousFunc = fun(x: Int, y: Int): Int {
return x + y
}
println(anonymousFunc(3, 4)) // 7
람다 함수 (Lambda Function)
: 람다 함수는 익명 함수의 일종으로, 함수의 인라인 표현식이다. 람다 함수는 간결하고 직관적인 구문을 제공하며, 주로 고차 함수의 인자로 사용된다.
// 람다를 만드는 방법 1
val sum1 = fun(x: Int, y: Int): Int {
return x + y
}
// 람다를 만드는 방법 2
val sum2 = { x: Int, y: Int -> x + y }
fun main(){
// 람다를 호출하는 방법 1
println(sum1(3,4))
// 람다를 호출하는 방법 2 (invoke 사용)
println(sum1.invoke(3,4))
// 컬렉션과 함께 사용하는 람다 함수
val numbers = listOf(1, 2, 3, 4, 5)
val doubled = numbers.map { it * 2 }
println(doubled) // [2, 4, 6, 8, 10]
}
콜백 함수 (Callback Function)
: 콜백 함수는 특정 작업이 완료된 후 호출되는 함수이다. 주로 비동기 작업이나 이벤트 처리에서 사용된다. 예를 들어, 네트워크 요청이 완료된 후 결과를 처리하는 함수를 전달할 때 사용된다.
fun main() {
// 둘다 가능
myFunc({
println("함수 호출")
})
println("---------------------")
myFunc(){
println("함수 호출")
}
println("---------------------")
// 인자가 1개라면 () 생략 가능
myFunc{
println("함수 호출")
}
println("---------------------")
}
fun myFunc(callBack : () -> Unit){ // (input) -> return
println("함수 시작")
callBack()
println("함수 끝")
}
고차 함수 (Higher-Order Function)
: 고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수이다. 함수가 일급 시민인 코틀린에서 고차 함수는 매우 일반적이다.
// 함수를 인자로 받는 고차 함수
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
// 함수를 반환하는 고차 함수
fun add(a: Int): (Int) -> Int {
return { b -> a + b }
}
val sum = calculate(3, 4, { x, y -> x + y }) // 7
val add5 = add(5)
println(add5(3)) // 8
지역 함수
: 함수안에서 다른 함수를 선언하는 것
fun outerFunction(x: Int, y: Int): Int {
// 지역 함수 정의
fun innerFunction(a: Int, b: Int): Int {
return a + b
}
// 지역 함수 호출
return innerFunction(x, y) * 2
}
scope function
: 일시적인 영역을 형성하는 함수
: 람다를 사용해 일시적인 영역을 만들고 코드를 더 간결하게 만들거나, method chaning에 활용하는 함수를 scope function이라고 한다.
- let: 하나 이상의 함수를 call chain 결과로 호출 할 때 (람다의 결과를 반환 / it 사용)
- run: 객체 초기화와 반환 값의 계산을 동시에 해야 할 때 (람다의 결과를 반환 / this 사용)
- also: 객체 설정을 할 때 객체 수정하는 로직이 call chain 중간에 필요할 때(객체 그 자체 / it 사용)
- apply: 객체 설정을 할 때 객체 수정하는 로직이 call chain 중간에 필요할 때 (객체 그 자체 / this 사용)
- with: 확장 함수가 아님
참고 사이트
※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.
* CopyRight 2024. Jay Park All rights reserved.
'Study > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 코루틴 (0) | 2024.07.02 |
---|---|
[Kotlin] 코틀린 클래스 (0) | 2024.07.02 |
[Kotlin] 코틀린 조건문 / 반복문 (0) | 2024.07.02 |
[Kotlin] 코틀린 리스트/배열 (0) | 2024.07.02 |
[Kotlin] 코틀린 문자열 (0) | 2024.07.02 |