본문 바로가기
Do it 코틀린 프로그래밍

코틀린 함수형 프로그래밍( 람다식 )

by 차누감 2020. 5. 18.

코틀린은 함수형 프로그래밍( FP )과 객체 지향 프로그래밍( OOP )을 모두 지원하는 다중 패러다임 언어입니다.

 

일급 객체 특징
● 일급 객체는 함수의 인자로 전달할 수 있다.
● 일급 객체는 함수의 반환 값에 사용할 수 있다.
● 일급 객체는 변수에 담을 수 있다.

람다식은 일급 객체의 특징을 가진 이름 없는 함수입니다.

 

람다식

인자, 매개 변수를 이용한 람다식 함수 작성

fun main() {
   println(highFunc({x,y -> x+y},10,20)) // 람다식 함수를 인자로 넘김
}

fun highFunc(sum: (Int,Int) -> Int, a:Int, b:Int):Int = sum(a,b) // sum 매개변수는 함수

 

매개변수

highFunc()의 매개 변수로 (함수, 변수, 변수)입니다. 

매개변수로 함수 형태는 익숙하지 않지만, 결국 뒷부분 콜론 뒷 부분) 만 다를 뿐입니다.

 

fun highFunc(sum: (Int, Int) -> Int, a: Int, b: Int):Int = sum(a,b)

 

인자

fun main(){
  println( highFunc( {x, y -> x+y}, 10, 20 ) )
}

 

 

변수에 할당하는 람다식 함수 작성

fun main() {
    var result : Int
    var mul ={x:Int, y:Int -> x*y} // 일반 변수에 람다식 할당

    result=mul(2,3) //람다식이 할당된 변수는 함수처럼 사용 가능
    println(result)
}

변수 mul 이름이 함수 형태로 사용할 수 있게 됩니다.  mul (2, 3) 

 

 

람다식 선언과 할당

val multi: (Int, Int) -> Int = { x: Int, y: Int -> x * y }

 

생략 표현

val multi: (Int, Int) -> Int = { x: Int, y: Int -> x * y }
val multi: (Int, Int) -> Int = { x  , y  -> x * y }  // 자료형 생략
val multi   = { x: Int, y: Int -> x * y } // 선언 자료형 생략

구분을 위해 배경색 적용
val multi: (Int, Int) -> Int = { x: Int, y: Int -> x * y }

val multi: (Int, Int) -> Int = { x  , y  -> x * y }  // 자료형 생략
val multi   = { x: Int, y: Int -> x * y } // 선언 자료형 생략

 

반환 자료형과 매개변수에 따른 표현

val greet: ()-> Unit = { println("Kotlin") }  // 매개변수와 리턴이 없는 경우
val square: (Int) -> Int ={ x -> x * x } // 매개변수와 리턴이 있는 경우

Unit은 반환 값이 없을 경우 사용합니다.

 

 

댓글