반응형
프로그래밍 언어에서 제공하는 익명함수 정의 기법
람다 함수는 주로 함수를 간단하게 정의할 때 이용하며
람다식이라고도 한다.
// 함수 선언식
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