Kotlin откат оператора Элвиса для любого случая нуля в цепочке вызовов функций - PullRequest
1 голос
/ 13 марта 2020

Я хотел бы знать, вызывается ли оператор ?: elvis, если один из следующих вызовов функций возвращает null.

  private fun extractProductAttributes(productEntity: JSONObject): List<JSONObject> {
        return productEntity.optJSONObject("Entity")
                ?.optJSONObject("Attributes")
                ?.optJSONArray("Attribute")
                ?.toList() as List<JSONObject>
                ?: listOf()
    }

Если какая-либо из этих функций возвращает null I ' Я хотел бы вернуться к пустому неизменному списку. Это работает как ожидалось?

1 Ответ

0 голосов
/ 13 марта 2020

Да, будет. Давайте разберем код, чтобы увидеть, как он работает ...

Предположим, у вас есть этот код,

a?.b?.c ?: d

Если любой из a, a.b или a.b.c равно нулю, тогда возвращается d.

Refs:


На боковой ноте вам необходимо использовать безопасное приведение здесь.

productEntity.optJSONObject("Entity")
                ?.optJSONObject("Attributes")
                ?.optJSONArray("Attribute")
                ?.toList() as? List<JSONObject>
                ?: listOf()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...