一、概述
let 表达式,和 ‘ ?. ’运算符一起使用,很方便。不好描述,见下图
二、适用场景
一个对象的深层次嵌套属性需要拿来进行逻辑, 需要层层判断该属性是否为null 的。 很适合用let 表达式代替 断语句
原来代码:
fun logicFee(event: PassiveRequestEvent) {
if (event.passiveType == PassiveRequestEvent.TYPE_PUSH) {
if (event.pushData != null || event.pushData.text == null || EmptyUtil.isEmpty(event.pushData.text.order)) {
return
}
for (order in event.pushData.text.order) {
//逻辑
}
}
}
使用let 操作符后的代码:
fun logicFee(event: PassiveRequestEvent) {
if (event.passiveType == PassiveRequestEvent.TYPE_PUSH) {
event?.pushData?.text?.order?.let { it ->
for (order in it) {
//逻辑
}
}
}
}
缩减断语句的 if 显示比较,很好用
fun orderDetail(contex: Context, order: RespPushData.TextBean.Order?, refreshMethod: () -> Unit) {
// if (order == null || TextUtils.isEmpty(order.order_id)) {
// return
// }
order?.order_id?.let {
//逻辑
}
}