美文网首页工具癖程序员
Kotlin的Lambda编程(一)

Kotlin的Lambda编程(一)

作者: 爱思考的程序员 | 来源:发表于2018-10-23 09:28 被阅读13次

一,何为Lambda?

本质上就是可以传递给其他函数的一小段代码

二,Lambda的作用

可以轻松的把通用的代码结构去程库函数,常见就是和集合一起工作,能够有效的缩短代码,使得代码更加简洁,在Kotlin中就使用了大量的Lambda表达,并且Kotlin的和java的能够无缝连接。

三,Lambda表达式和成员引用

java的点击事件会以内部类的形式进行操作,如下

button.setOnClickListener(new OnClickListener(){
@override
public void onClick(View view){
}
});

然而kotlin可以这样

button.setOnClickListener{
//操作
}
也可以这样
button.setOnClickListener{ view->
//操作
}
对比一下我们看起来是不是简单多了,是不是看起简单多了,代码看起来既美观也简洁,这还不算什么,好戏还在后面。

Lamdba与集合

继续我们的操作
一个集合 val list = listOf(Person("张三",22),Person("李四",33))
找出里面最大的年龄,当然你可以写一个方法进行再循环中判断查找,如果这样做你就是太Low了,现在告诉你们最简单的方法
list.maxBy{it.age} 这样就OK了,一句话搞定。是不是很神奇,其实这就会Kotlin内置的库函数 我们直接调用就完事,其中的 it.age就是实现这个逻辑的Lamdba,里面进行年龄的判断工作。

Lambda表达式的语法

{x:Int,y:Int -> x+y} 始终在大括号里面,在符号->前面的是参数,后面的函数体。例如:
val sum = {x:Int,y:Int -> x+y}
println(sum(1,2))

Kotlin有这样的一种语法约束,如果Lambda表达式是函数调用的最后一个实参,它可以放到括号的外边。

people.maxBy(){p:Person ->p.age}

当是唯一实参的时候,还可以去掉代码中的空括号对。Lambda还对类型可以进行类型的推导,上面的Person类型可以省略。使用默认参数也可以 it代替

使用默认参数名称

people.maxBy { it.age }  //其中it是自动生成的参数名称

在作用域中访问变量

Lambda中使用函数参数

fun test(message:Collection<String>,msg:String){
    messages.forEach{
        Log.d("tag","$msg $it")
    }
}

Kotlin中不会仅限于访问final变量,在Lambda内部可以修改这些变量

注意:
Java只允许你捕捉final变量,Kotlin可以访问非final,并可以修改它们。

成员引用

val getAge = Person::age//这个地方后面可以用泛型方式代替Person。
Person::age  //类和成员,前面是类,后面是成员。
//引用顶层函数 可以省略类直接写冒号。
fun salute() = println("sssss")
run(::salute)

这种省略了类名称,直接以冒号开头,成员引用::name被当做实参进行传递给run,它会掉相应的函数。
这部分到此结束!!
后面还有 集合的函数式API等用法,下期详解.....

作者写作不易,希望小小鼓励 ,将会是我前进的动力。欢迎指正。

相关文章

  • Kotlin学习笔记——lambda

    参考文献——kotlin之Lambda编程来自简书作者——程自舟 Kotlin lambda语法 完整写法 省略参...

  • Kotlin-Lambda编程-集合的创建与遍历

    Java到JDK1.8之后加入Lambda编程,Kotlin从第一个版本开始支持Lambda编程。 1、传统意义上...

  • Kotlin修炼指南(二):lambda表达式的精髓

    lambda表达式是Kotlin函数式编程的一个重要概念,要想掌握函数式编程,就必须熟练掌握lambda表达式,并...

  • kotlin lambda编程

    本文是对<>中 “lambda编程”一章的总结,主要记录了一些我认为比较重要的点 Lambda...

  • Kotlin的Lambda编程(一)

    一,何为Lambda? 本质上就是可以传递给其他函数的一小段代码 二,Lambda的作用 可以轻松的把通用的代码结...

  • 自定义函数式接口

    在 Kotlin 的 lambda 编程中有说过对于单个抽象方法的接口可以用 lambda 进行简写,这种特殊的接...

  • kotlin之Lambda编程

    lambda即lambda表达式,简称lambda。本质上是可以传递给其它函数的一小段代码。有了lambda,可以...

  • Kotlin之Lambda编程

    1、Lambda的定义 Lambda就是一小段可以作为参数传递的代码。正常情况下,我们向某个函数传参时只能传入变量...

  • Kotlin-Lambda编程

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

  • Kotlin学习 1 -- 快速入门Kotlin

    本篇文章主要介绍以下几个知识点:Kotlin 语言简介变量和函数程序的逻辑控制面向对象编程Lambda 编程空指针...

网友评论

    本文标题:Kotlin的Lambda编程(一)

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