kotlin: 使用let
一,功能
Kotlin 的 let
函数是一个常用的作用域函数,主要用于对对象进行安全操作或链式转换。
它的核心特点是接收一个对象,通过 lambda 表达式处理该对象并返回结果
二,例子,与apply比较
apply:
1、函数返回的类型都是原泛型对象本身;
2、函数内部持有的是this,原对象本身。
Let:
1、let函数所返回的对象,是在函数中运行完的对象,即let函数的返回类型是根据匿名函数最后一行的变化而变化的;
2、函数内部持有的是it。
代码:
//处理按钮点击事件
binding.button3.setOnClickListener {
"kotlin".let {
println("原字符串:$it") // kotlin
it.reversed()
}.let {
println("反转字符串后的值:$it") // niltok
it.plus("-java")
}.let {
println("新的字符串:$it") // niltok-java
}
"kotlin".also {
println("原字符串:$it") // kotlin
it.reversed()
}.also {
println("反转字符串后的值:$it") // kotlin
it.plus("-java")
}.also {
println("新的字符串:$it") // kotlin
}
"kotlin".apply {
println("原字符串:$this") // kotlin
this.reversed()
}.apply {
println("反转字符串后的值:$this") // kotlin
this.plus("-java")
}.apply {
println("新的字符串:$this") // kotlin
}
}
运行结果:
三,例子:apply修改字符串本身需要使用stringbuilder
代码:
//处理按钮点击事件
binding.button4.setOnClickListener {
StringBuilder("kotlin").apply {
println("原字符串:$this") // kotlin
this.reverse()
}.apply {
println("反转字符串后的值:$this") // niltok
this.append("-java")
}.apply {
println("新的字符串:$this") // niltok-java
}
StringBuilder("kotlin").also {
println("原字符串:$it") // kotlin
it.reverse()
}.also {
println("反转字符串后的值:$it") // niltok
it.append("-java")
}.also {
println("新的字符串:$it") // niltok-java
}
}
运行结果: