Kotlin 문법 학습의 Lambda

2672 단어

1. 람바다 소개


Lambda 표현식은 코드의 복잡도를 줄여 코드를 더욱 깔끔하게 보일 수 있다. 또한 Kotlin에는 많은 고급 함수들이 있는데 이런 함수들은 기본적으로 Lambda 표현식에 의해 실현되기 때문에 Lambda 표현식을 배우는 것이 필요하다.
Kotlin의 Lambda 표현식은 본질적으로 익명 함수로 구현됩니다.

2. 람바다 문법


2.1 표현식 특징

  • 람다는 항상 {}에 싸인다.
  • 파라미터가 있으면 -> 왼쪽에 있다.
  • 함수체가 있으면 -> 오른쪽에 있습니다.

  • 2.2 문법


    2.2.1 매개 변수 없음


    구문:
    //   
    val/var     = {
        //    
    }
    

    예:
    //   
    fun t1() {
        println("       ")
    }
    
    //   Lambda
    var tt1() = {
        println("    Lambda   ")
    }
    

    2.2.2 참조


    구문:
    //   1
    val/var    : (    ,      ...) ->       = {
        //    
    }
    
    //   2
    val/var     = {
           :     ,    :    , ... ->     
    }
    

    예:
    //   
    fun t2(a: Int, b: Int): Int {
        return a + b
    }
    
    // Lambda   1
    var tt2: (Int, Int) -> Int = {
        a, b -> a + b
    }
    
    // Lambda   2
    var ttt2 = {
        a:Int, b: Int -> a + b
    }
    

    2.2.3 함수 중의 매개 변수로


    구문:
    //   
    fun    (   :     , ... ,    : (   :      ...) ->    ):     {
        //  
    }
    

    예:
    //   
    fun sum(a: Int, b: Int): Int {
        return a + b;
    }
    fun t3(a: Int, b: Int): Int {
        return a + b
    }
    t3(4, sum(5,6))
    
    // Lambda           
    fun tt3(a: Int, sum: (num: Int, num2: Int) -> Int): Int {
        return a + sum.invoke(5,6);
    }
    tt3(4, {num: Int, num2: Int -> num + num2})
    

    설명:
    함수 중의 매개 변수로서 이해하기 어려우므로 일반 함수 중의 어떤 매개 변수를 하나의 함수로 바꾸는 것으로 볼 수 있다. 이 함수는 바로 람바다 형식의 함수이고 많은 고급 함수는 이 방법을 통해 이루어진다.

    3. Lambda 표현식 사용


    3.1 it


    lambda 표현식 함수 중의 매개 변수가 1개일 때 it 로 대체할 수 있습니다.
    fun tt4(a: Int, foo: (num: Int) -> Boolean ): Int {
        if(foo(a)) {
            return a
        } else {
            return 0
        }
    }
    
    tt4(10, { it > 5}) //   10
    tt4(3, { it > 5}) //  0
    

    등가:
    tt4(10, { num:Int -> num > 5 })
    

    3.2 Android View를 위한 OnClickListener 아날로그 작성


    시뮬레이션View:
    class View {
        
        // listener         
        var mListener: ((s: String) -> Unit)? = null
        
        fun setOnClickListener( listener: ((s: String) -> Unit)?) {
            this.mListener = listener
        }
        
        fun click(s: String) {
            mListener?.invoke(s)
        }
    }
    

    클릭 감청을 설정하고 클릭:
    var v = View();
    
    v.setOnClickListener { println("I want Say: $it") }
    
    v.click("Hello Kotlin")  //   :I want Say: Hello Kotlin
    

    3.3 미완속...

    좋은 웹페이지 즐겨찾기