当前位置:   article > 正文

Kotlin高级特性:3、集合操作符_kotlin 高级特性

kotlin 高级特性

Kotlin 集合操作符

基本上 RxJava 中支持的操作符,在 Kotlin 中都可以找到。

代码示例

fun main(args: Array<String>) {
    val a:Array<String> = arrayOf("4","d","e","q","s","g","5","0","i","9")

    val index:Array<Int> = arrayOf(5,3,4,9,1,2,6,8,7,10,3,11,5,12)


    index.filter {
        it < a.size // 过滤掉index数组中大于a的长度的元素
    }.map {
        a[it]   //做一次变换:取出a数组中it下标的元素
                //it 就是index进行过滤后,对剩下所有元素进行遍历时的临时变量
    }.reduce { s, s1 ->
        "$s$s1" //将两个值合并成一个值
    }.also {
        println("结果:$it") //使用 also 输出结果
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

拓展函数简单示例

fun show(){
    val list:List<Int> = listOf(1,2,3,4,5)
    list.convert {
        it+1
    }.forEach {
        print(it)
    }
}

/**
 * 如果把返回值类型由 MutableList<E> 更改为 Iterable<T>
 * 那么该扩展函数 convert 就可以应用于任意类型的集合,不止再局限于 List
 */
inline fun <T,E> Iterable<T>.convert(action:(T) -> (E)): MutableList<E>{
    val list:MutableList<E> = mutableListOf()
    /**
     * for循环,向list中添加数据
     * 每次添加的内容为:action(item)的结果
     * in this 的这个this,是当前对象,也就是谁调用了convert
     * this 指的就是谁
     * 所以action(item)这里的item,就是当前对象的元素
     * for循环也就是在遍历当前对象
     * 所以这里的item就是上述show方法例子中的:
     *          1,2,3,4,5,
     * 那么将1,2,3,4,5传入到action中
     * 所以在show中,convert中的it就是 1,2,3,4,5,
     * 执行完加1后返回,结果就是2,3,4,5,6
     *
     * 关于 T 和 E
     * action:   表示要接受的是一个函数
     * 函数的参数类型为 T
     * 返回值类型为 E
     * 实际上就是可以接受任意类型的参数,也可以返回任意类型的返回值
     * 在show示例中,{ it+1 } 中的 it,就是匿名函数的参数,对应类型为 T
     * it+1 就是匿名函数的返回值,对应类型为 E
     */
    for (item:T in this) list.add(action(item))
    return list
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/575948
推荐阅读
相关标签
  

闽ICP备14008679号