kotlin - 我可以以某种方式结合布尔检查和空检查吗?我想知道这个kotlin方法是否可以进一步简化
问题描述
我是 Kotlin 的新手,我想知道可以简化以下方法的最优化方式。
如果金额由 X 人支付,则我需要退还应付金额,否则我需要退还 0。
在下面的代码中,支付是一个可以为空的对象。它包含retailAmount,它也是一个可以为空的对象。RetailAmount包含baseCharges,它是一个 Double。(另外,如果支付或零售金额为空,我需要返回 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
推荐阅读
- angular - ORDS RESTful 服务 + 带有身份验证的 Angular
- typescript - 属性 'webkitSpeechRecognition' 不存在于类型 'Window & typeof globalThis'.ts(2339)
- kubernetes - 我应该在集群中将存储驱动程序保密多久?
- java - 在列表视图中使用 searchview 功能时选中复选框
- rust - 如何在没有互联网访问的情况下使用 rust/cargo?
- ios - 是否可以在创建钱包时发送 changeMessage 通知?
- wordpress - 在 wordpress 中使用过滤器请求获取 404 和内容
- python - Pyomo:一组一组
- angular - 角度单元测试keyCode?
- visual-studio-code - 是否可以告诉 vscode intellisense 排除特定类型的字符模式?