1、apply
fun main(args: Array<String>) {
val list= arrayListOf<String>()
/**
* this代表调用者本身
* 返回值是调用者本身
*/
list.apply {
this.add("哈哈")
add("张三")
add("李四")
}
list.forEach {
println(it)
}
}
输出:
2、let
fun main(args: Array<String>) {
val list= arrayListOf<String>()
/**
* it代表调用者本身
* let函数返回值是函数参数的返回值 就是lambda表达式的返回值
*/
list?.let {
it.add("张三")
it.add("张三")
it.add("张三")
"哈哈"
10
}
}
3、with
fun main(args: Array<String>) {
val list= arrayListOf<String>()
/**
* with是独立的函数 可以在任意地方调用
* with函数需要接收两个参数
* 第一个参数可以接收任意类型
* 第二个参数是函数参数,并且这个函数参数是带接收者的函数字面值 接收者就是第一个参数
* with函数返回值是第二个函数参数的返回值
*/
with(list){
this.add("")
this.add("")
add("")
"哈哈"
10
}
}
4、run
fun main(args: Array<String>) {
val list= arrayListOf<String>()
/**
* this就是调用者本身
* run函数返回值就是函数参数的返回值
*/
list.run {
this.add("")
"哈哈"
}.length
}
• Apply(使用this代表当前对象,返回值是当前对象)
• Let(太用it代表当前对象,返回值是表达式最后一行)
• With(使用this代表当前对象,返回值是表达式最后一行)
• Run(使用this代表当前对象,返回值是表达式最后一行)