Kotlin 공부 기록(3) - 람다식(람다 표현식), 확장함수, return
my code archive
article thumbnail
반응형

🔎람다 표현식(Lambda expression)

    • 람다식, 람다 표현식, 람다라고 불린다.
    • 마치 value처럼 다룰 수 있는 익명함수 (이름이 없는 함수)
    • return값으로 사용할 수 있다.
  • 기본 형태
1
val lamdaName : Type = {argumentList -> codeBody}
cs

결과값 : 144

  • 람다 함수는 항상 { }으로 감싸서 표현해야 한다.
  • { }안에 -> 표시가 있다. (-> 왼쪽 : 매개변수, 오른쪽 : 함수 내용)
  • 마지막 줄이 return값이다.
  • 매개변수 타입을 선언해야 한다, 타입을 추론할 수 있을 때에는 생략 가능하다.(중요)

🔎람다 확장 함수

    • 기존에 정의된 클래스에 함수를 추가하는 기능
    • 자신이 만든 클래스에 새로운 함수가 필요할 때 쉽게 추가할 수 있다.
  • 기본 형태
1
2
3
4
5
6
7
8
fun 확장하려는대상.함수명(매개변수):Unit {
}
 
fun 확장하려는대상.함수명(매개변수):리턴타입 {
   return 값
}
 
 
cs
  • 확장함수 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//3.확장함수
 
val pizzaIsGreat : String.() -> String={
    this + "Pizza is the best!"
}
fun exetendString(name : String , age : Int) : String{
                                                //확장함수 파라미터     //int
    val introduceMyself : String.(Int) -> String = {"I am ${this} and ${it} years old"}
 
    return name.introduceMyself(age)
}
 
fun main(){
        println(square(12))
        println(nameAge("joyce",99))        //★타입 추론 가능하다 중요★
        val a = "jungah said"
        val b = "mac said"
        println(a.pizzaIsGreat())
        println(b.pizzaIsGreat())
 
    }
cs

 

🔎람다에서의 return

  • 맨 마지막에 있는 식이 return값이 된다.
  • 일반적으로 람다식 내부에서는 return을 사용할 수 없다.
1
2
3
4
5
6
7
8
9
10
11
12
13
//4.람다의 return
val calculateGrade : (Int)->String = {
    when(it){
        in 0..40->"fail"
        in 41..70->"pass"
        in 71..100->"perpect"
        else->"Error"
    }
}
 
fun main(){
        println(calculateGrade(97))
    }
cs

 

🔎함수를 직접 다른 함수로 전달하기

  • 자바에서는 일련의 동작을 변수에 저장하거나 다른 함수에 넘길 때 복잡했다.
  • 람다식은 함수를 값(value처럼 다루는 접근 방식을 택함으로써 간단하게 해결할 수 있다.
  • 기존처럼 클래스를 선언하고 그 클래스의 인스턴스를 함수에 넘기는 대신
  • 함수를 직접 다른 함수에 전달할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//5.람다를 표현하는 여러 가지 방법
fun invokeLamda(lamda : (Double)->Boolean) : Boolean{
    return lamda(5.2343)
}
 
fun main(){
        
 
     val lamda : (Double)->Boolean = {number : Double->
            number == 4.3213
        }
        println(invokeLamda(lamda))
        println(invokeLamda ({ it>3.22 }))    
 
    }
cs
  • 버튼 클릭 OnClickListener 도 훨씬 간결한 코드로 구현 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
/* 자바에서의 일반적인 클릭 리스너 구현 */
button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       //TODO
   }
});
 
 
/* 람다로 클릭 리스너 구현 */
button.setOnClickListener { 
    //TODO
cs
반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형