官方api其实已经将我们常用的快捷操作用高阶函数给封装好了,比如with
,apply
等操作符,所以剩下的就是接口调用了。
不知道大家用Kotlin实现过OnClickListener接口没有,有3种写法:
普通点击:
view.setOnClickListener(object :View.OnClickListener{ override fun onClick(v: View?) { } })
优化点击:
view.setOnClickListener { v -> { } }
衍生店家
view.setOnClickListener { }
我们一对比发现,代码是一步一步被省略的,首先是省略了接口声明(转化为了lambda),其次是省略了lambda的花括号(Kotlin的特性,当参数只有一个lambda参数的时候,括号可以省略),所以我们要实现的是如何将接口声明转化为lambda,哈哈,这不正是我们高阶函数所擅长的吗
实现
虽然我们不能直接看到kotlin内部的高阶函数的实现方式,但是我们按住ctrl
键将鼠标移到方法上是可以看到高阶函数的声明方式的,如你所见是这样的:
public final fun setOnClickListener( l: ((v: View!) Unit)! ): Unit
看过我上篇文章的一眼就能看明白,这是声明了一个以view为参数的无返回值的高阶函数,但他是如何