1. lambda
람다식은 value처럼 다룰 수 있는 익명함수이다
1)메소드의 파라미터로 넘겨줄 수 있다. fun maxBy(여기에 람다식 함수 넣을 수 있음)
2)리턴 값으로 사용할 수 있다.
lambda의 기본 정의
val LambdaName : type = {argumentList -> codeBody}
val square : (Int) -> (Int) = {number -> number*number}
val square2 = {number : Int -> number*number} //둘 중 하나의 방식으로!
fun main(){
println(square(12))
}
-둘 다 같은 로직을 포함한 람다식이다
-타입을 명시할 때 어느정도까지 표기해야 하는지를 알 수 있다
-출력값 144
val nameAge = {name: String, age : Int ->
"my name is ${name} I'm ${age}"
}
fun main() {
println(nameAge("Joyce",99))
}
1-2. 람다와 확장함수
val pizzaIsGreat : String.() -> String = {
this + "Pizza is the best"
}
fun main() {
val a = "mac said "
println(a.pizzaIsGreat())
}
//출력 mac said pizza is the best
확장 함수
fun extendString(name: String, age:Int) : String{
val introduceMyself : String.(Int) -> String = {"I am ${this} and ${it} years old"}
return name.introduceMyself(age)
}
fun main() {
println(extendString("ariana", 27))
}
1-3 람다의 return
val calculateGrade : (Int) -> String =
//소괄호를 해야 여러값을 parameter로 받을 수 있음
{when(it) {
in 0..40 ->"fail"
in 41..70 ->"pass"
in 71..100 ->"perfect"
else ->"Error"
} }
-(int) -> String에서 출력값이 String이다
만약 else문이 없다면 오류가 뜬다
왜냐하면 항상 String 형태로 출력되어야 하는데 100보다 큰 숫자가 나오면 오류가 뜰 것이기 때문이다
-println(calculateGrade(971))
출력값:"Error"
1-4 람다를 표현하는 2가지 방식
fun invokeLambda(lambda : (Double) -> Boolean) : Boolean {
return lambda(5.2343)
}
fun main() {
println(invokeLambda(lambda))
println(invokeLambda({it >3.22}))
println(invokeLambda { it > 3.22 }) //위의 식과 같음 소괄호 없음
}
-출력값
false, true, true
로또 번호 추첨 토이 프로젝트 (0) | 2022.02.09 |
---|---|
BMI 계산기 안드로이드 앱 토이프로젝트 (0) | 2022.02.08 |
kotlin 1강 정리 (0) | 2022.02.04 |
단말기 테스트 (0) | 2021.09.06 |
안드로이드 구조 (0) | 2021.09.03 |
댓글 영역