람다표현식
1. 익명함수이다( 함수에 이름이 없다)
2. 변수처럼 사용돼서 함수의 argument, return 이 될 수 있다.
- 함수의 들어가는 argument가 변수가 아니고 함수가 들어갈 수 있다
- return 값이 변수가 아닌 함수가 나올 수 있다.
우선 Parameter와 Argument의 차이를 알아보자
Parameter는 함수를 정의할 때 사용되는 변수를 의미한다.
Argument는 실제로 함수가 호출될 때, 넘기는 변수값을 의미한다.
val b: (Int) -> Int = { it * 10 } // 입력값이 하나 일 경우에 it으로 받을 수 있다. 함수 맨 마지막 줄에 오는 것이 return 값이다.
val c = { i: Int, j: Int -> i * j } // 타입을 생략을 하고 함수 구현부에 타입을 넣을 수 있다.
val d: (Int, Int, Int) -> Int = { a, b, c -> a * c }
3. 익명함수 언제 많이 쓰나? 한번만 사용되고, 재사용되지 않는 함수를 사용할 때
람다 함수 사용 예시
- 람다 함수 선언 후 바로 호출(변수를 대입)하는 방법
var sum = { num1: Int, num2: Int -> num1 + num2 } (100, 200) // 람다 함수
println(sum) // 출력값 300
- 파라미터가 없는 람다함수
var a = { -> println("hello world1") }
var b = { println("hello world2") }
var c = fun(){println("hello world3")}
a() //호출하기 출력값 hello world1
b() //호출하기 출력값 hello world2
c() //호출하기 출력값 hello world3
- 파라미터(입력값)를 하나만 가지는 람다함수
var lam1 = { num: Int -> println(num) }
lam1(100) // 100
var lam2: (Int) -> Unit = { println(it) } // 함수 타입 사용
lam2(100) // 100
val lam3: (Int) -> Int = { it * 10 } // 입력값이 하나 일 경우에 it으로 받을 수 있다.
// 함수 맨 마지막 줄에 오는 것이 return 값이다.
println(lam3(100)) //1000
- 람다함수의 반환
람다함수는 리턴을 사용할 수 없음
람다 함수의 반환 값은 본문의 가장 마지막 줄
val lambda = { num1: Int, num2: Int ->
println("output")
num1 * num2
}
println(lambda(3, 10))
//출력
//output
//30
val first: (Int, Int) -> Int = { x: Int, y: Int -> x * y } //전체 표현
val second = { x: Int, y: Int -> x * y } //선언 자료형 생략
val third: (Int, Int) -> Int = { x, y -> x * y } //람다식 매개변수 자료형 생략
val fourth = {x, y -> x * y} //선언 자료형과 람다식 매개변수 자료형 둘다 생략하면 컴파일 오류
'코딩테스트 준비(kotlin) > 문법정리' 카테고리의 다른 글
[kotlin 문법] sorted(), sort(), sortedWith(), sortWith() , sortedBy, sortBy() (0) | 2024.07.10 |
---|---|
[kotlin 코틀린] groupBy와 groupingBy (0) | 2024.06.21 |
[kotlin] distinct 중복 제거 (0) | 2024.05.22 |
kotlin - filter (0) | 2024.04.22 |
[kotlin] 코틀린 입력 및 출력 (1) | 2023.10.16 |