• kotlin之lambda表达式和匿名函数


    lambda表达式,称为匿名函数,是一种函数字面值,也就是没有声明的函数,但可以作为表达式传递出去.


    函数类型:

    对于接受另一个函数的作为自己的参数,必须针对这个参数指定一个函数的类型如

    fun <T>max(collection: Collection<T>,less:(T,T)->Boolean):T?{
        var max :T?=null
        for (it in collection){
            if (max==null ||less(max,it))
                max=it
        }
        return max
    }

    参数less的类型(T,T)->Boolean ,也就是说,它是一个函数,接受二个T类型的参数,并且返回一个Boolean类型的结果


    lambda表达式语法

     val sun = { x: Int, y: Int -> x + y }

    表达式包含在大括号之内,在完整的语法形式中,参数声明在小括号中,参数类型可选,函数体在->符合之后,如果lambda表达式自动推断的返回值类型不是Unit,那么在lambda表达式函数体中,最后一条表达式的值会被当做整个lambda表达式的返回值


    匿名函数

    ints.filter(fun(item)=item >0)

    对于匿名函数,返回值类型的自动推断方式与通常函数的一样,如果函数体是一个表达式,那么返回值类型可以推断得到,如果函数体是多条语句组成的代码段,则返回值类型必须明确指定

    注意:匿名函数参数一定在小括号内传递,允许将函数参数写在小括号之外的语法,仅对lambda表达式有效.


    闭包

     var sum = 0
        ints.filrter(it>0).forEach(
                sum+=it
        )
        print(sum)

    lambda表达式匿名函数可以访问它的闭包,也就是定义在外层范围的变量.,

  • 相关阅读:
    MongoDB慢查询性能分析
    redis的LRU算法(二)
    Skynet服务热点火焰图分析
    内存爆灯
    时区问题
    与机器共生
    bug狩猎
    Lesson Learned
    下划线引起的血案
    Intel的CPU漏洞:Spectre
  • 原文地址:https://www.cnblogs.com/loaderman/p/10143717.html
Copyright © 2020-2023  润新知