반응형
안녕하세요. 훈츠 입니다. 오늘은 고차 함수와 람다 함수에 대해 이야기 해 보겠습니다.
고차 함수
함수를 마치 클래스에서 만들어낸 인스턴스 처럼 취급 하는 방법 입니다. 코틀린에서는 모든 함수를 고차함수로 사용 가능 하여, 함수를 파라메터로 넘겨 줄수도 있고, 결과값으로 반환 받을 수도 있습니다.
fun main() {
b(::a) //고차함수 출력할때 사용
}
fun a(string: String){
println("$string 함수 a")
}
//고차함수 예시
fun b(fc : (String) -> Unit){ //fun b(function : (자료형) -> 반환형
fc("b 가 호출한")
}
//출력
b 가 호출한 함수 a
함수의 형식(자료형, 자료형...) -> 함수의 반환형 //반환형이 없다면 "Unit" unit은 값이 없다는 뜻입니다.
람다 함수
별도의 연산자 없이 함수를 담을수 있습니다.
//c, d의 함수 자료형을 매개변수로 받는 함수
fun b(fc : (String) -> Unit) {
fc("b 가 호출한")
}
//e의 함수 자료형을 매개변수로 받는 함수
fun returnB(fc : (String) -> String) {
val retStr = fc("b 가 호출한")
println(retStr)
}
fun main() {
//람다함수
val c:(String) -> Unit = {str:String ->
println("${str} c 람다함수")
}
//람다함수(자료형을 생략한)
val d :(String) -> Unit = {str ->
println("${str} d 람다함수")
}
//람다함수 (리턴 타입이 있는) : 마지막 줄이 return 됩니다.
val e :(String) -> String = {str ->
println("${str} e 람다함수")
"return message"
}
// 함수 호출
b(c)
b(d)
returnB(e)
}
//출력 화면
b 가 호출한 c 람다함수
b 가 호출한 d 람다함수
b 가 호출한 e 람다함수
return message
리턴 값이 있는 람다 함수
val calculate:(Int,Int) -> Int = {a,b ->
println(a)
println(b)
a+b //* 여기서는 마지막 구문이 a+b의 값을 Int로 반환 합니다.
}
파라미터가 없는 람다함수
val a: () -> Unit = {println("패러미터가 없어요")}
파라미터가 하나뿐인 람다함수 에서는 it을 사용
val a: (String) -> Unit = {println("$it 람다함수")}
//println 앞에 패러미터 이름을 생략가능.
'컴퓨터 언어 > 코틀린' 카테고리의 다른 글
[Kotlin] 코틀린 오브젝트 싱글톤 패턴 object (0) | 2020.02.15 |
---|---|
[Kotlin] 코틀린 스코프 함수 [apply, also, run, let,] (0) | 2020.02.14 |
[Kotlin] 코틀린 변수 함수 클래스의 스코프 접근 제한자 (0) | 2020.02.14 |
[Kotlin] 코틀린 클래스 2 상속 & 기능 확장 (0) | 2020.02.13 |
[Kotlin] 코틀린 클래스 1 (0) | 2020.02.13 |