람다식은 우리가 마치 value 처럼 다를 수 있는 익명 함수
1. 메소드의 파라미터로 넘겨줄 수가 있다. fun maxby(a : Int)
2. return 값으로 사용할 수 가 있다.
1. 람다의 기본 정의
val lamdaName : Type = { argList -> codeBody}
//선언(val, var) : 타입 = { 받은 값(argument) -> 어떻게할 건지 함수 }
1-1) 타입 추론 가능
val square : (Int) -> (Int) = {number : Int -> number * number}
// Int를 넣고 Int으로 return 받음 input/output이 Int형이기 때문에
// number의 타입을 추론함(타입 추론 가능 앞이든 뒤든 Int 필수)
fun main() {
println(square(12))
// 144가 나옴
}
1-2) 람다에서는 마지막 파라미터가 리턴 값
val nameAge = {name : String, age : Int -> "my name is ${name} I'm ${age}" }
fun main() {
println(nameAge("jacob", 29))
}
//my name is jacob I'm 29 출력
//함수를 변수안에 담을 수 있음
2. 확장 함수
val pizzaIsGreat : String.() -> String = {this : String this + "Pizza is the best!"}
//this가 가르키는 것은 String. 객체를 가르킴
fun main() {
val a = "jacob"
println(a.pizzaIsGreat())
// jacob Pizza is the best! 출력
// 변수 a가 String 클래스이기 때문에 pizzaIsGreat로 확장 가능
}
2-1) this와 it
fun extednString(name : String , age : Int) : String {
val introduceMyself : String.(Int) -> String = { "I am ${this} and ${it} years old"}
return name.introduceMyself(age)
}
fun main(){
println(extednString("jacob", 29))
// I am jacob and 29 years old
}
- it은 파라미터 하나만 있을 때 해당 파라미터를 가리킴 (" Int ")
- this는 확장 함수를 콜 하는 object를 가리킴 ("String.()")
3. 람다의 RETURN 박식
// Double를 받고 Boolean을 받고 싶다 : 받는자료형 Boolean
fun invokeLamda(lamda : (Double) -> Boolean) : Boolean {
return lamda(5.2343)
}
fun main(){
val lamda = {number : Double -> number == 4.3213}
println(invokeLamda(lamda)) // false 출력
println(invokeLamda({it > 3.22})) // true 출력
println(invokeLamda {it > 3.22}) // 첫번째 파라미터이자 마지막 파라미터이기 때문에 ()생략가능
//마지막 파라미터가 람다식일 때
}
반응형
'Kotlin' 카테고리의 다른 글
[Kotlin] 안드로이드 스튜디오 Guideline (반응형 UI) 사용 방법 (0) | 2022.09.26 |
---|---|
[Kotlin] Companion object(Java의 Static) 사용 방법 (0) | 2022.09.23 |
[Kotlin] Map & Set 사용 방법 (0) | 2022.09.20 |
[Kotlin] Intent (화면 전환) 사용 방법 (1) | 2022.09.19 |
[Kotlin] Array(배열) & List 사용 방법 (0) | 2022.09.16 |