kotlin的一些标准函数

news/2024/9/22 9:28:54/

文章目录

      • 1. this 上下文
        • with
        • run
        • apply
      • 2. it 上下文
        • let
        • also
      • 3. 其他好用的函数
        • map
        • filter
        • reduce
        • flatMap

kotlin的标准函数有 run,let,with 等等,平时用的时候没有太在意他们之间的差异,现在来总结对比一下。
将他们分成 this 上下文和 it 上下文两类。

1. this 上下文

包括 with,run,apply 这三个函数。

with

最后一行代码作为返回值

val list = mutableListOf("Apple", "Tree")
with(list) {add("Hello")add("World")
}
Log.i(TAG, list.toString())

输出:[Apple, Tree, Hello, World]

run

最后一行代码作为返回值,功能和 with 一样,只不过调用方式有差异。

val list = mutableListOf("Apple", "Tree")
list.run {add("Hello")add("World")
}
Log.i(TAG, list.toString())

输出:[Apple, Tree, Hello, World]

apply

返回自己

val list = mutableListOf("Apple", "Tree")
val test = list.apply {add("Hello")add("World")
}

2. it 上下文

包括 let,also

let

最后一行代码作为返回值,通常和 ?一起使用,用于判空

val list = mutableListOf("Apple", "Tree")
list.let {it.add("Hello")it.add("World")
}

also

返回自己,和 apply 标准函数一样返回自己,只不过 apply 提供的是 this 上下文

val list = mutableListOf("Apple", "Tree")
var test = list.also {it.add("Hello")it.add("World")
}

3. 其他好用的函数

平时比较常用到的有 map,reduce,filter,flatMap 等。

map

map 可以将一个集合映射成另外一个集合

val list = mutableListOf("Apple", "Tree")
val num = list.map { it -> it.length }
Log.i(TAG,num.toString())

输出:[5, 4]

filter

filter 顾名思义可以帮助我们从集合中挑选出符合要求的元素

val list = mutableListOf("Apple", "Tree")
val filter = list.filter {  it.length > 4 }
Log.i(TAG,filter.toString())

输出:[“Apple”]

reduce

reduce 可以累积一个操作

val list = mutableListOf("Apple", "Tree")
val reduceStr = list.reduce { acc, s -> acc+"$"+s }
Log.i(TAG,"reduceStr:${reduceStr}")

输出:Apple$Tree

flatMap

flatMap 可以将嵌套的 list 抚平

val nestList = listOf(listOf(1,2,3), listOf(4,5,6), listOf(7,8,9)
)
val flatList = nestList.flatMap { it }
Log.i(TAG,flatList.toString())

输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]


http://www.ppmy.cn/news/40366.html

相关文章

rust网络编程以及unsafe模块

网络层目前 IPv4 和 IPv6 分庭抗礼,IPv6 还未完全对 IPv4 取而代之;传输层除了对延迟非常敏感的应用(比如游戏quic协议),绝大多数应用都使用 TCP;而在应用层,对用户友好,且对防火墙友…

网络安全之入侵检测

目录 网络安全之入侵检测 入侵检测经典理论 经典检测模型 入侵检测作用与原理 意义 异常检测模型(Anomaly Detection) 误用检测模型(Misuse Detection) 经典特征案例 ​编辑自定义签名 ​编辑 签名检查过程 检测生命周期…

什么是Windows数据恢复?[数据恢复操作指南]

什么是Windows数据恢复及其工作原理? Windows用户通常都会将他们重要工作和生活文件存储在他们的存储设备上。随着存储空间的缩小,相当多的人可能会删除一部分不需要的或旧的文件来释放空间。或者,他们也可能不小心删除了仍然有用的文件。 …

Java多线程:ThreadLocal源码剖析

ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结,讲解ThreadLocal采取这样的思路。 三个理论基础 在剖析ThreadLo…

(函数指针) 指向函数的指针

函数指针- 指向函数的指针函数指针的声明和使用通过函数指针调用函数函数指针做参数函数指针数组函数指针的声明和使用 函数指针的声明格式: 返回值类型 (*函数指针名)(参数列表); 其中: *函数指针名 表示函数指针的名称返回值类型 则表示该指针所指向…

初级算法-栈与队列

主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-栈与队列一、栈实现队列二、队列实现栈三、有效的括号四、删除字符串中的所有相邻重复项五、逆波兰表达式求值六、滑动窗口最大值七、前K个高频元素栈先进后出,不提供走访功能…

移动APP测试流程及测试点

1.APP测试基本流程 1.1测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向负责人确认项目排期。 1.2测试资源 测试任…

Oracle 数据泵导出导入(映射表空间、Schema)

Export(源数据库) 创建存放dmp的文件夹 [rootmycplmdb01 u01]# mkdir export [rootmycplmdb01 u01]# chown -R oracle:oinstall export [rootmycplmdb01 u01]#使用 sys 用户在数据库创建文件夹对象,并授权 [oraclemycplmdb01 ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.1…