ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Kotlin作用域函数全解析:let、run、apply、also

Kotlin作用域函数全解析:let、run、apply、also Kotlin作用域函数全解析let、run、apply、alsoKotlin作用域函数全解析let、run、apply、alsoletrunapplyalso对比示例Kotlin作用域函数全解析let、run、apply、also作用域函数就是为对象开辟一个临时作用域简化代码避免重复写对象名一共 4 个核心核心区分看两点接收参数it还是this返回值lambda结果还是对象本身函数内部引用对象返回值典型用途letitlambda 最后一行结果空安全处理对象转换runthislambda 最后一行结果对象内部操作 返回计算结果applythis原对象本身对象初始化批量设置属性alsoit原对象本身附加额外操作日志、调试let内部访问对象it返回lambda 表达式的返回值最后一行最常用?.let做空安全valstr:String?hellovallenstr?.let{println(it.length)// it 代表str非空it.length// 返回值给到 len}// str为null整个let不执行lennull适用场景可空对象安全调用需要把对象转成另一个值❗内部是it不能直接访问属性要it.xxxrun内部访问对象this可以省略 this返回lambda 最后一行结果兼具 apply let 的部分特性valresultabc.run{// this 是字符串可以省略length10}println(result)// 13// 空安全 runvalstr:String?kotlinvalresstr?.run{uppercase()// this.uppercase()}适用对对象做一系列计算需要返回计算结果直接访问对象属性方法this 省略和 let 区别run用thislet用itapply内部访问对象this可省略返回原对象本身最常用于对象构建、批量赋值dataclassUser(varname:String,varage:Int0)valuserUser().apply{name张三age20}// apply返回自己直接赋值给user链式调用很舒服初始化实例首选 apply。返回对象本身所以可以链式继续调用对象方法。also内部访问对象it返回原对象本身vallistmutableListOfInt().also{it.add(1)it.add(2)println(it)// 打印日志}// also返回list对象典型场景做附加操作打印日志、调试、埋点不改变对象做完操作继续把对象往下传。和 apply 对比applythis适合修改对象属性alsoit适合额外的附带操作对比示例valobjtestvalaobj.let{it.length}// it返回4valbobj.run{length}// this返回4valcobj.apply{println(this)}// this返回testvaldobj.also{println(it)}// it返回test
返回列表