博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kotlin学习笔记——lambda表达式
阅读量:7083 次
发布时间:2019-06-28

本文共 1773 字,大约阅读时间需要 5 分钟。

语法

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

练习一:遍历数组并打印

fun main() {    //定义一个String类型的数组array    val array: Array
= 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()}复制代码

转载于:https://juejin.im/post/5ce0d3fd6fb9a07edf2713db

你可能感兴趣的文章
【UVA】434-Matty's Blocks
查看>>
MyISAM和InnoDB的区别
查看>>
boost.lexical_cast 学习
查看>>
Android中使用第三方jar包
查看>>
JS问题Uncaught ReferenceError:XXXX is not defined
查看>>
android之【本地通知Notification】
查看>>
应用程序框架实战三十:表现层及ASP.NET MVC介绍(一)
查看>>
Android之drawable state各个属性详解
查看>>
【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照
查看>>
平衡二叉树
查看>>
采用FPGA实现多种类型的数字信号处理滤波器
查看>>
浅谈android4.0开发之GridLayout布局
查看>>
CloseHandle(),TerminateThread(),ExitThread()的差别
查看>>
后端码农谈前端(HTML篇)第三课:常见属性
查看>>
NPOI系列
查看>>
virtual private catalog
查看>>
Android剪裁图片简单的方法
查看>>
iPhone/Mac Objective-C内存管理教程和原理剖析
查看>>
PRML Chapter 2. Probability Distributions
查看>>
[转]Console命令详解,让调试js代码变得更简单
查看>>