본문 바로가기
모바일 APP/Android with Kotlin

람다 함수

by 살길바라냐 2021. 12. 19.
반응형

프로그래밍 언어에서 제공하는 익명함수 정의 기법

람다 함수는 주로 함수를 간단하게 정의할 때 이용하며

 

람다식이라고도 한다. 

 

// 함수 선언식

fun 함수명(매개변수) { 함수 본문 }


//  람다 함수 선언 형식

{ 매개변수 => 함수 본문 }


// 매개변수 넣은 함수

fun sum (no1: Int, no2: Int):Int {
 return no1 + no2
}

// 매개변수 넣은 람다함수 

val sum = {no1: Int, no2: Int -> no1 + no2}

람다 함수는 {} 로 표현한다.
{} 안에 왼쪽은 매개변수 화살표(->)오른쪽은 함수 본문이다. 
함수의 반환값은 함수 본문의 마지막 표현식이다. ]

 

// 람다 함수 호출문
sum(10, 20)

// 람다 함수 선언과 호출
{no1: Int, no2: Int -> no1 + no2} (10, 20)

// 매개변수가 없는 람다 함수
{->  println("call")}

// 화살표 생략 람다
{println("call")}

// 매개 변수 1개 람다
val sum = {no: Int -> println(no)}
sum(10)

// it 이 Int를 가르킨다고 생각하면 된다. 
val sum: (Int) -> Unit = {println(it)}
sum(20)

// 결과 
// 10
// 20

그러나 람다 함수는 이름이 없어 호출이 불가하다
그래서 함수를 호출하고 싶다면 변수에 대입해야 한다.

 

val sum = {no1: Int, no2:Int -> println("this ramda")
no1 * no2
}

println("result: ${sum(1, 2)}")

// 결과
// 2

람다는 return을 사용 할수 없다. 
그래서 마지막줄이 실행 결과다

 

타입 선언 

 

fun sum (n1: Int, n2: Int): Int {
return n1 + n2
}

val sum: (Int, Int) -> Int = {n1: Int, n2: Int -> n1 + n2}

 

타입 별칭

 

// 매개변수

typealias My = Int
fun sum() {
  val n1 : Int = 1
  val n2 : My = 2
}


// 함수
typealias My = (Int, Int) -> Boolean

fun sum() {
 val som: My = {n1: Int, n2: Int -> n1 > n2}
}

// 매개변수 타입 생략

typealias My = (Int, Int) -> Boolean

fun sum() {
 val som: My = {n1, n2 -> n1 > n2}
}


fun sum(): (Int, Int) -> Boolean = {n1, n2 -> n1 > n2}

 

 

728x90

'모바일 APP > Android with Kotlin' 카테고리의 다른 글

뷰 클래스  (0) 2021.12.20
고차 함수  (0) 2021.12.19
조건문  (0) 2021.12.14
컬렉션 타입  (0) 2021.12.13
데이터 타입  (0) 2021.12.13