美文网首页
kotlin学习笔记——lambda表达式

kotlin学习笔记——lambda表达式

作者: 崔兴旺 | 来源:发表于2019-05-19 11:48 被阅读0次

    语法

    lambda被大括号包含
    {T,T->Boolean},代表的含义是两个T类型参数,返回值为Boolean

    练习一:遍历数组并打印

    fun main() {
        //定义一个String类型的数组array
        val array: Array<String> = arrayOf("a", "", "c")
    
        println("==========lambda终极遍历方式==========")
        array.forEach(::println)
    
        println("==========普通遍历方式==========")
        for (a in array) {
            testPrint(a)
        }
        
        println("==========完整版的lambda写法==========")
        array.forEach({ element -> testPrint(element) })
    
        println("==========如果一个函数的最后一个参数是lambda表达式,则可以将该表达式写在括号后面==========")
        array.forEach() { element -> testPrint(element) }
    
        println("==========如果一个函数只有一个参数,且参数是lambda表达式,则小括号都可以省略==========")
        array.forEach { element -> testPrint(element) }
    
        println("==========如果lambda表达式参数只有一个,则参数名默认用it==========")
        array.forEach { testPrint(it) }
    
        println("==========如果函数与lambda表达式的`参数、返回值一致,则可以用双冒号写法()==========")
        array.forEach(::testPrint)
    }
    
    /**
     * 自定义的打印方法
     */
    fun testPrint(str: String) {
        println(str)
    }
    
    

    练习二:仿照view点击事件回调

    1.声明一个View类

    class View {
        //定义一个lambda表达式变量
        //第一种方式:使用lambda表达式作为成员变量
        var mOnClickListener = { view: View -> Unit }
        //第二种方式:使用函数作为成员变量
        /*
        var mOnClickListener = fun(view: View) {
    
        }
        */
    
        //为lambda赋值
        fun setOnClickListener(onClick: (View) -> Unit) {
            this.mOnClickListener = onClick
        }
    
        //在点击事件中触发回调
        fun click() {
            mOnClickListener(this)
        }
    }
    

    2.在activity中设置view的监听事件,并点击view触发监听

    fun main() {
        val view = View()
        //最完整的lambda写法
        view.setOnClickListener({ view: View -> println("被点击了,view:$view") })
        //去掉了小括号和View类型
        view.setOnClickListener { view -> println("被点击了,view:$view") }
        //当参数只有一个view时,用it代替view
        view.setOnClickListener { println("被点击了,view:$it") }
    
        //点击view,触发监听
        view.click()
    }
    

    相关文章

      网友评论

          本文标题:kotlin学习笔记——lambda表达式

          本文链接:https://www.haomeiwen.com/subject/uawfzqtx.html