본문 바로가기

[Kotlin]람다 함수(Lambda)

by 머니해커_개발자 2020. 3. 30.

안녕하세요. 개발자입니다.

오늘은 코틀린에서 사용하는 람다 함수를 다뤄보겠습니다.

Kotlin에서의 함수

반환 자료형 생략 및 블록, return 생략 가능

fun add(x:Int, y:Int) : Int{
	return x+y
}
fun add(x:Int, y:Int) = x+y

람다함수

익명 함수를 간결하게 표현할 수 있는 방법

val add:(Int, Int) -> Int = {x:Int, y:Int -> x+y }
val add = {x:Int, y:Int -> x+y }
println(add(10,20))

함수를 타입처럼 사용할 수 있습니다. 또한 인자로 전달할 수 있습니다.

코틀린의 람다식

  • 형식 : { 매개변수 -> 함수내용 }
  • 람다 함수는 항상 { }로 감싸서 표현
  • 인수 목록을 나열하고 -> 이후에 본문 위치
  • 인자는 ()로 감싸지 않음
  • 인자는 형식 추론이 가능하므로 타입 생략 가능
  • 함수 반환값은 함수 내용의 마지막 표현식
  • 변수에 람다식을 저장하고, 변수를 일반 함수처럼 사용

         변수에 대입하지 않으면 이후 람다 함수를 사용할 수 없음

         람다 함수 뒤에 ()를 추가하여 함수 호출

         Run() 함수에 대입해도 바로 함수가 호출되어 실행

         람다식이 유일한 인자일 경우 () 생략가능

람다함수 실습 코드

fun main() {
    val add:(Int, Int) -> Int = {x:Int, y:Int -> x + y} //익명함수를 람다식으로 표현
    val add2:(int, Int) -> Int = {x, y -> x+y} //위와 같은 함수. 타입 명시의 차이
    println(add(1,2))
    println(add2(10,20))
    val add3:(Int, Int) -> Unit = {x:Int, y:Int -> println(x+y)}
    add3(10,20)    
    
    println({x:Int, y:Int ->x+y}(1,2)) //동일한 결과를 출력
}

 

'Kotlin > 강의' 카테고리의 다른 글

[Kotlin]SAM(Single Abstract Method) 변환  (0) 2020.03.30
[Kotlin]꼬리 재귀 함수(Tail Recursive Function)  (0) 2020.03.30

댓글

최신글 전체

이미지
제목
글쓴이
등록일