상세 컨텐츠

본문 제목

kotlin 2강

android

by 개복신 개발자 2022. 2. 7. 14:23

본문

728x90
반응형

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

 

반응형

'android' 카테고리의 다른 글

로또 번호 추첨 토이 프로젝트  (0) 2022.02.09
BMI 계산기 안드로이드 앱 토이프로젝트  (0) 2022.02.08
kotlin 1강 정리  (0) 2022.02.04
단말기 테스트  (0) 2021.09.06
안드로이드 구조  (0) 2021.09.03

관련글 더보기

댓글 영역