Kotlin中let、apply、also、with、run的使用与区别

一 概述

let

let()函数是一个扩展对象函数,一般用于对象的判空处理,函数块里面it代指该对象,最后一行或者return为返回的结果。

preson?.let{
	return 1
}

apply

apply函数块里面this代指该对象,并返回对象本身。适合进行对象的初始化或配置。

val list = mutableListOf(1, 2, 3).apply {  
    println("原列表:$this")  
    add(4)  
    println("修改后列表:$this")  
}  
println("最终列表:$list") // 输出:最终列表:[1, 2, 3, 4]

also

also()函数和let()函数相似,函数块里面it代指该对象,不同的是,返回的是对象本身。

val user = User("Alice").also {  
    it.age = 30  
    println("用户:${it.name}, 年龄:${it.age}")  
} 

with

with()函数是一个内联函数,它把传入的对象作为接受者,在该函数内可以使用this指代该对象来访问其公有的属性和方法。该函数的返回值为函数块最后一行或指定的return表示式。

val list = mutableListOf(1, 2, 3)  
val sum = with(list) {  
    println("原列表:$this")  
    var sum = 0  
    for (item in this) {  
        sum += item  
    }  
    sum  
}  
println("列表元素和:$sum") // 输出:列表元素和:6

run

with和let的结合体。它可以像with()函数一样直接在函数块中使用this指代该对象,也可以像let()函数一样为对象做统一的判空处理。

二 总结

函数体里面写的时候是it和this提示就可以区分,主要还是以下两点

  • 两个a开头的返回的是对象本身,其余的返回是return或者最后一行结果(lambda 表达式的结果)。
  • with是内联函数,其他的是扩展函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值