Kotlin_Android 앱 개발/코틀린 익히기

03. 익명 함수, 람다식

하다블 2024. 1. 8. 21:14
반응형

안녕하세요. 하다블입니다.

오늘은 람다식 함수에 대해 기록해보고자 합니다.

익명 함수, 람다식은 "일급 객체"로서 함수가 갖는 특징 중 하나에 속합니다. 바로, 함수를 변수에 할당할 수 있다는 것입니다. 코틀린의 함수는 일급 객체에 속하며 오늘은 일급 객체에 대해서는 다루지 않으려고 합니다.

기본적으로 람다식의 기본 모양은 다음과 같이 생겼습니다.

{ /* 실행될 문장 */ }

중괄호 안에 간단한 문장이 들어가는 형식입니다. 예시를 들어 설명하겠습니다.

val addFunc = { a:Int,B:Int ->a+b}
val result = addFunc{30,20}
println(result) //50

다음 코드처럼 변수에 함수를 할당해서 사용할 수 있습니다. 이때 addFunc에 들어간 형태를 람다식이라고 합니다.

함수들은 return 할 수 있으니 람다식이 정의되어 있는 변수 역시 return할 수 있습니다.

fun cal(a:Int,B:Int,oper:(Int,Int)->Int):Int{
	return oper(a,b)
}
val add={A:Int,B:Int->A+B}
val result=cal{30,10,add}

다음처럼 함수 자체를 return 해줌으로써 중복되는 함수들을 줄일 수 있습니다. 지금은 덧셈으로 한정되어 있지만 변수를 추가하여 덧셈을 할지, 뻴셈을 할 지, 또는 다른 작업을 할 지 결정해서 함수를 return 해줄 수도 있습니다.

fun cal(name:String):(Int,Int)->Int?{
	var oper:(Int,Int)->Int)?=null
    if(name=="add")
    	oper={a,b->a+b}
	else if(name="subtract")
    	oper={a,b->a-b}
    return oper
}

이런 식으로 String을 받아서 덧셈을 할 지 뻴셈을 할 지 결정한 다음 함수를 return해줄 수도 있습니다. 

람다식, 익명 함수라는 것을 익혀서 오늘도 기록해 보았습니다. 최대한 중복되는 함수를 줄일 수 있는 좋은 방법을 익힐 수 있어 좋은 것 같습니다.

더 노력하는 사람이 되겠습니다. 감사합니다.

반응형