美文网首页
Kotlin-高阶函数(2019-01-16)

Kotlin-高阶函数(2019-01-16)

作者: Guow110 | 来源:发表于2019-01-16 11:28 被阅读8次

高阶函数

高阶函数可以将函数作为参数或者是返回值

  • forEach
    提供遍历集合的功能,forEach其实是IntArray类的扩展方法,它接受一个(Int)-> Unit的lambda表达式并且使用for循环对集合中的每个对象都做action操作。
  • map
    通常用于集合的映射
    val oldList = listOf(1, 2, 3, 4, 5)
    val newList = ArrayList<Int>()
    //遍历并处理数据源的每一条数据
    val newList1 = oldList.map {
      it * 2 + 3
    }
    //还可用于集合的转换
    val newList2 = oldList.map(Int::toDouble)
    
  • flatMap
    通常用于扁平化集合,是一种支持二维集合映射的高阶函数
    val list = listOf(
          1..20,
          2..5,
          3..4
    )
    val newList3 = list.flatMap {
        it
    }
    //结合map进行一些数据的变换
    val newList4 = list.flatMap {
      it.map {
          "NO.$it"
      }
    }
    
  • reduce
    通常用于求和
    var sum = oldList.reduce { acc, i -> acc + i }
    
  • fold
    用于求和并加上一个初始值
    sum = (1..5).fold(5) { acc, i -> acc + i }
    
  • filter
    用于过滤数据集合
    val newList5 = oldList.filter {
      //过滤条件
      it == 2 || it == 4
    }
    
  • takeWhile
    用于带有条件的循环遍历
    val res = oldList.takeWhile {
      //当元素等于2的时候结束循环
      it != 2
    }
    
  • let,apply,with
    简化代码,直接可以在lambda函数中使用对象的属性和方法
     p?.let {
          println(it.name)
          println(it.age)
          it.work()
      }
    //---------------
     p?.apply {
          println(name)
          println(age)
          work()
      }
    //-------------------
    with(BufferedReader(FileReader("test.txt"))) {
      var line: String?
      while (true) {
          line = readLine() ?: break
          println(line)
      }
      close()
    }
    
    
  • use
    use是针对那些实现了Closable接口的对象的扩展方法,也就是大部分的IO操作相关类会有这个扩展高阶方法
    在try中调用block针对Closable对象的操作,如果发生了异常会记录并抛出异常,finlly中不管有没有出异常都会自动做关闭操作,避免了IO处理的try..catch..finally样板代码。
    val file = File("test.txt")
    val bufferReader = BufferedReader(FileReader(file))
    bufferReader.use {
        it.readLine()
    }
    

本文仅作为个人学习记录
参考文章:简Kotlin 之旅5

相关文章

  • kotlin从入门到看开 ₆

    layout: posttitle: "kotlin-高阶函数"subtitle: "这个世...

  • Kotlin-高阶函数(2019-01-16)

    高阶函数 高阶函数可以将函数作为参数或者是返回值 forEach提供遍历集合的功能,forEach其实是IntAr...

  • Kotlin-高阶函数的使用(二)

    文章目录: Kotlin-高阶函数的使用(一) 上一篇文章带大家认识到了什么是高阶函数,那这一章就带大家看看高阶函...

  • Kotlin使用技巧(一)-接口与命名参数的优雅运用

    抛出问题 看过我的Kotlin-高阶函数的使用(二)都知道,我们的setOnClickListener可以这样写:...

  • Kotlin-高阶函数

    函数入门 今天我们来讲解Kotlin的函数一说到函数,很多同学可能脑子里面是这样的一个概念。 我们高中数学经常与函...

  • Kotlin-高阶函数

    介绍 Kotlin是函数式编程,所以可以把函数作为参数传递给函数,或者作为函数的返回值使用,我们称其为高阶函数。本...

  • kotlin-高阶函数

    定义:一个用函数作为参数或者返回值的函数如何定义:()->Unit 括号里面代表函数的参数,箭头后面代表函数的返回...

  • Kotlin-高阶函数

    高阶函数的作用 就是用来定义函数式编程里面接收Lambda表达式的函数。 高阶函数的定义 如果一个函数接收另一个函...

  • Kotlin-高阶函数的使用(一)

    1.定义:什么是高阶函数 高阶函数就是以另一个函数作为参数或返回值的函数,Kotlin可以以lambda或参数引用...

  • python学习(三)函数式编程

    高阶函数 函数也是变量,函数参数为函数的函数,称作高阶函数 自定义高阶函数 内建高阶函数 map/reducema...

网友评论

      本文标题:Kotlin-高阶函数(2019-01-16)

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