kotlin - Kotlin elvis 运算符回退函数调用链中任何 null 情况
问题描述
?:
如果以下函数调用之一正在返回,我想知道是否调用了elvis 运算符null
。
private fun extractProductAttributes(productEntity: JSONObject): List<JSONObject> {
return productEntity.optJSONObject("Entity")
?.optJSONObject("Attributes")
?.optJSONArray("Attribute")
?.toList() as List<JSONObject>
?: listOf()
}
如果其中任何一个函数返回null
,我想回退到一个空的不可变列表。这是否像预期的那样工作?
解决方案
是的,它会。让我们分解代码,看看它是如何工作的......
假设,你有这个代码,
a?.b?.c ?: d
如果a
、a.b
或中的任何一个a.b.c
为 null,则d
返回。
参考:
- https://kotlinlang.org/docs/reference/null-safety.html#safe-calls
- https://kotlinlang.org/docs/reference/null-safety.html#elvis-operator
附带说明一下,您需要在此处使用安全演员表。
productEntity.optJSONObject("Entity")
?.optJSONObject("Attributes")
?.optJSONArray("Attribute")
?.toList() as? List<JSONObject>
?: listOf()
推荐阅读
- python - Pyspark - 根据其他值的比较删除具有匹配值的行
- java - 将参数传递给 StringTemplate 函数
- python - 为列表中的值组合创建 pandas 数据框行的最快方法
- r - 使用 dplyr 和 enquo 我的代码有效,但当我传递给 purrr::map 时无效
- reactjs - 许多内部服务器错误
- php - 将数据库中的文章第一张图片显示为封面图片
- r - 可视化连续预测变量和分类结果之间的关系
- python - 使用 Flask 进行异步后台处理?
- swift - 如何在 OSX 上以编程方式为 SpriteKit/GameScene 应用程序设置窗口大小和位置
- python - 使用 BeautifulSoup 抓取嵌套的 div]