我可以以某种方式组合布尔值和空值检查吗?我想知道这个 kotlin 方法是否可以进一步简化

Can I combine boolean and null checks somehow? I would like to know if this kotlin method can be simplied further

我是 Kotlin 的新手,我想知道可以简化以下方法的最优化方式。

如果金额由 X 人支付,那么我需要 return 应付金额,否则我需要 return 0.

在下面的代码中,payments 是一个可为空的对象。它包含 retailAmount 这也是一个可为空的对象。 retailAmount 包含 baseCharges,这是一个 Double。 (此外,如果 paymentsretailAmount 为空,我需要至 return 0)

// get charges payable by X(Retailer/Shopkeeper/Customer)
fun getChargesPayableByX(personX: String): Double {
    // are charges payable by X(Retailer/Shopkeeper/Customer)?
    if (areChargesPayableByX(personX)) {  
        return payments?.retailAmount?.baseCharges ?: 0.0
    }
    return 0.0
}

您可以这样做:

fun getChargesPayableByX(personX: String): Double = 
    areChargesPayableByX(personX).takeIf{it == true}?.let{ payments?.retailAmount?.baseCharges } ?: 0.0