我可以以某种方式组合布尔值和空值检查吗?我想知道这个 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。 (此外,如果 payments 或 retailAmount 为空,我需要至 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
我是 Kotlin 的新手,我想知道可以简化以下方法的最优化方式。
如果金额由 X 人支付,那么我需要 return 应付金额,否则我需要 return 0.
在下面的代码中,payments 是一个可为空的对象。它包含 retailAmount 这也是一个可为空的对象。 retailAmount 包含 baseCharges,这是一个 Double。 (此外,如果 payments 或 retailAmount 为空,我需要至 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