Kotlin高阶函数入门

6 篇文章 1 订阅
1 篇文章 0 订阅
1.什么是高阶函数

Kotlin中的高阶函数与数学中的高阶函数定义类似,在Kotlin中,高阶函数是将函数用作参数或返回值的函数。

通常情况下,函数类型的实例化都用通过lambda表达式来展现。

函数以类似 (A,B)->C 的结构声明,例如(Int) -> String
表示接受一个类型为Int的参数,并返回一个String的函数。

类似的有:(Int,Int)->Long , ()->Unit ,((Int, Int) -> Int)?

2.高阶函数的使用
2.1 函数作为参数

在andorid中,很多耗时操作都是在异步线程中处理(如网络请求),通常需要使用接口回调的方式拿到返回的数据,如果使用高阶函数,那么这个过程可以简化为:

fun getData(success:(d:Data)->Unit){
    //获取数据
     val data = Data()
    //获取成功->data
    success(data)
}

函数类型还可以携带一个特殊的接收者类型,此类型传给调用的接收者对象成为隐式的this。声明为:A.(B) -> C

举个例子:我们需要对TextView进行统一的设置文本,文字大小,颜色等属性,可以写一个TextView的扩展函数

    fun TextView.apply(block : TextView.()->Unit){
        block()
    }
    

在使用的时候,不需要引用textview的对象:

  textview.apply {
    text = "Hello Kotlin"
    textSize = 16f
    gravity = Gravity.CENTER
}
2.2 函数作为返回值

定义一个返回下一个斐波那契数列的值的闭包:

   private fun fibonacci():()->Long{
        var first = 0L
        var second = 1L
        return fun():Long{
            val result = second
            second += first
            first = second - first
            return result
        }
    }
    
    fun main(){
        val nextFibonacc = fibonacci()
        println(nextFibonacc())
        println(nextFibonacc())
        println(nextFibonacc())
        println(nextFibonacc())
        println(nextFibonacc())
        println(nextFibonacc())
    }
        

输出结果如下:

1
1
2
3
5
8

上述的例子其实是在函数内部又定了一个匿名的函数并返回。作为kotlin的“一等公民”,这个写法是允许的。

   fun funcA(){
        fun funcB(){
            
        }
    }

以上是Koltin中高阶函数的定义以及使用场景,合理的使用高阶函数和Lambda表达式可以很好地发挥函数式编程的优势。

更多安卓知识体系,请关注公众号:
三分钟Code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值