美文网首页
Lambda编程笔记

Lambda编程笔记

作者: 闪客飞飞 | 来源:发表于2020-12-23 18:59 被阅读0次

    表达式的语法:
    { x:Int,y:Int ->x+y}
    参数 函数体
    把表达式存储在一个变量中 然后把这个变量当作普通函数对待,(通过相应的实参调用他)
    val sum={x:Int,y:Int ->x+y}
    println(sum(2,4) )
    people.maxby(it.age)

    val sum={x:Int,y:Int->
    println(")
    x+y
    }
    println(sum(2,3))

    成员引用: ::
    Person :: age
    类 成员

    集合的函数式API

    基础 filter map
    list.filter{it%2==0}
    filter 对给定符合匹配的数据进行判定过滤。可以移除部分元素但是不会去修改数据
    map 可以对集合中的每一个元素应用给定的函数并把结果收集到另一个行的集合当中。个数不变但是每个元素根据给定的判断式做了变换。

    all any count find 对集合的应用判断式:
    检查所有元素是否都符合某个条件,通过all any 函数表达
    count 检查有多少元素符合判断式
    find 返回第一个符合判定式的元素
    example:
    val canBeInClue27={p:Person ->p.age<=27}
    println(people.all(canBeInClue27)))
    println(people.any(canBeInClue27))
    println(people.count(canBeInClue27))
    pritnln(people.find(canBeInClue27))

    groupBy:把列表转化成分组的map
    println(people.groupBy{it.age})

    flatMap flatten :处理嵌套集合中的元素
    flatMap:主要做了两件事 首先根据实参给定的函数对集合中的每个元素进行映射,然后把多个列表合并成一个列表

    惰性集合操作:序列
    people.asSequence()
    .map(Person.name)
    .filter{it.startWith("A")}
    .toList()
    惰性操作集合的入口就是Sequence接口, 可以逐个列举元素序列的元素集合。可以高效的对元素集合执行链式操作而不需要创建额外的集合来保存中间产生的结果。

    with函数: with 返回的结果是执行的最后的一行代码的表达式的值
    fun alphabet():String{
    val stringbuilder=Stringbuilder()
    return with(stringbuilder){
    for( letter in 'A'...'Z')
    this.append(letter)
    }
    this.toString()
    }

    fun alphabet()=with(Stringbuilder){
    for( letter in 'A'...'Z')
    this.append(letter)
    }
    this.toString()
    }

    apply 函数与with 相同 但是区别是返回的apply返回作为实参传递给他的对象
    fun alphabet()=Stringbuilder().apply{
    for( letter in 'A'...'Z')
    this.append(letter)
    }
    } .toString()

    小结:
    1.lambda 允许作为参数传递给函数
    2.通过在函数前面添加前缀::可以创建方法 构造方法 以及属性的引用
    3.with 可以允许调用一个对象的多个方法不需要反复的写出这个对象的引用,apply 函数使你使用构建者风格
    的API 创建和初始化任何对象

    相关文章

      网友评论

          本文标题:Lambda编程笔记

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