美文网首页
Kotlin-Lambda表达式

Kotlin-Lambda表达式

作者: 郑了了了 | 来源:发表于2020-04-21 12:15 被阅读0次

Kotlin 的 Lambda 表达式

文章本人学习所写,不适合作为学习资料

kotlin高阶函数

首先你有一个 a 方法需要调用另一个 b 方法,你在方法a里面调用就可以
如果我想动态设置的不是方法参数,而是方法本身?
在 Java 里是不允许把方法作为参数传递的,但是我们有一个变通方案:接口。我们可以通过接口的方式来把方法包装起来

    void receiveMessage(Message message){
        message.getMessage(message)
    }
    interface Message{
        String getMessage(String message)
    }
    receiveMessage(message1)

这里本质上其实是传过来一个可以在稍后被调用的方法(getMessage())。只不过因为 Java 不允许传递方法,所以我们才把它包进了一个对象里来进行传递。
而在kotlin,函数参数是可以为函数类型的,当一个函数含有函数类型的参数的时候,如果你调用它,你就必须传入一个函数类型的对象给它;

    fun b(a:(Int)->String):String{
        return a(1)
    }
    fun c(index:Int):String{
        return "aa"
    }
    b(::c)//加两个冒号的表示函数作为对象传递(函数类型的对象)
    (::c)(1)

什么是Lambda?

Lambda 其实是一个函数类型的对象而已

    textview.setOnClickListener(object :View.OnClickListener{//object:对象的申明
        override fun onClick(v: View?) {
            v?.id
        }
    })
    textview.setOnClickListener {
        it.id//唯一参数默认名字:it
    }
    textview.setOnClickListener(fun(v:View){
        v.id
    })
    textview.setOnClickListener{v:View->
        v.id
    }

    baseQuickAdapter?.setOnItemClickListener(object :BaseQuickAdapter.OnItemClickListener{
        override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) {
        }
    })

    baseQuickAdapter?.setOnItemClickListener{
        adapter,view,position->

    }
    baseQuickAdapter?.setOnItemClickListener(fun(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int){

    })

相关文章

  • Kotlin-Lambda表达式

    Kotlin 的 Lambda 表达式 文章本人学习所写,不适合作为学习资料 kotlin高阶函数 首先你有一个 ...

  • Kotlin-lambda表达式(2019-01-21)

    1.Lambda表达式 2.Lambda语法 itit并不是kotlin的一个关键字2.it是在当一个高阶函数中L...

  • Kotlin-Lambda编程

    1.通过集合的函数式API来入门Lambda[https://www.jianshu.com/p/89dd3392...

  • Twig表达式

    Twig 表达式分为字面表达式、数学表达式、逻辑表达式、比较表达式、包含表达式、测试表达式、字符串插值表达式及其它...

  • php第五天--基本函数

    for变形格式for (表达式1; 表达式2; 表达式3) {循环体} 表达式1;for (; 表达式2; 表达式...

  • Python推导式(列表推导式、元组推导式、字典推导式和集合推导

    列表表达式 元祖表达式 字典表达式 集合表达式

  • 表达式

    原始表达式 最简单的表达式是“原始表达式”。原始表达式是表达式的最小单位,它们不再包含其他表达式。js中原始表达式...

  • 三元运算符

    基本格式 :(关系表达式) ? 表达式1 : 表达式2;执行流程 :关系表达式为 [真] 返回表达式1关系表达式为...

  • for循环

    for(表达式1;表达式2;表达式3){ //循环操作(输出) } 表达式1:循环变量的声明表达式.(a=...

  • daily -- mysql 基础 分支语句( if and

    if函数 语法:IF(表达式1,表达式2,表达式3); 如果表达式1成立(true),返回表达式2的值;如果表达式...

网友评论

      本文标题:Kotlin-Lambda表达式

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