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

我可以以某种方式组合布尔和空检查吗?我想知道这个kotlin方法是否可以进一步简化,kotlin,nullable,simplify,simplification,Kotlin,Nullable,Simplify,Simplification,我是Kotlin的新手,我想知道简化以下方法的最佳方法 如果金额由X个人支付,则我需要返回应付金额,否则我需要返回0 在下面的代码中,付款是一个可为空的对象。它包含retailAmount,这也是一个可为空的对象retailAmount包含基本费用,该费用为双倍。(如果付款或零售金额为空,我需要返回0) 您可以执行以下操作: fun getChargesPayableByX(personX: String): Double = areChargesPayableByX(personX)

我是Kotlin的新手,我想知道简化以下方法的最佳方法

如果金额由X个人支付,则我需要返回应付金额,否则我需要返回0

在下面的代码中,付款是一个可为空的对象。它包含retailAmount,这也是一个可为空的对象retailAmount包含基本费用,该费用为双倍。(如果付款零售金额为空,我需要返回0)


您可以执行以下操作:

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

这可能会更简单,因为
payments?.retailAmount?.baseCharges.takeIf{it!=null&&areChargesPayableByX(personX)}?:0.0
?@YoniGibbs任何适合你的东西。这些只是写同一件事的不同方式。它实际上并没有优化您的代码。@Saeedentzari和Yoni Gibbs感谢您的回复,我刚刚了解了takeIf运算符
fun getChargesPayableByX(personX: String): Double = 
    areChargesPayableByX(personX).takeIf{it == true}?.let{ payments?.retailAmount?.baseCharges } ?: 0.0