Проверить на логическое значение, когда ноль - PullRequest
0 голосов
/ 12 июня 2019

Если поле "размер" равно нулю, будет выдано исключение:

if (p?.company?.industries?.size > 0)
   job.industryName = p?.company?.industries!![0]

Я пытался использовать .size! но это также породило исключение. Как я могу проверить, если размер больше нуля?

1 Ответ

3 голосов
/ 12 июня 2019
(p!!.company?.industries?.size ?: 0) > 0

даст вам 0, если size (или, скорее, другой элемент цепочки) равен null, поэтому сравнение равно 0 > 0, что неверно.

Но в качестве примечания: почему все обнуляемо? И почему у вас такая случайная смесь ?. и !!?

Все члены поля могут иметь значение NULL, поскольку эти данные импортируются из Интернета, и нет никаких гарантий, что какое-либо из полей будет присутствовать.

Даже тогда вы можете хотя бы сделать

val industries = p?.company?.industries
if (industries != null && industries.size > 0) {
    job.industryName = industries[0]
}

или

p?.company?.industries?.let { 
    if (it.size > 0) { job.industryName = it[0] }
}

если вы не хотите создавать переменную для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...