Kotlin - как избавиться от этой ошибки компилятора? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть этот класс

data class Properties( val actionBarColor : Int , val fileName : String) : 
 Serializable{
var title : String = ""
var readModeOnly : Boolean = false
}

и это если условие

var properties = Properties()

if(properties?.readModeOnly){

}

Но компилятор говорит, что требуется Boolean найдено Boolean?.Что я должен сделать, чтобы сделать эту работу?Я не хочу, чтобы это обнулялось.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Попробуйте использовать ?.let{}

properties?.let {
    val readModeOnly = it.readModeOnly
    ...
}
0 голосов
/ 06 июня 2018

Вам нужен только оператор безопасного вызова ?., если левая сторона имеет тип NULL.В этом случае properties не имеет значения NULL (его тип Properties, а не Properties?), поэтому вы можете просто оставить оператора выключенным и получить доступ к свойству readModeOnly напрямую:

var properties = Properties()

if (properties.readModeOnly) {

}

Обновить в соответствии с комментарием ниже:

Если properties равен обнуляемым, то properties?.readModeOnly вернет Boolean? (так как вернет null, еслиproperties само по себе null).Это означает, что выражение может теперь принимать три значения: true, false или null.

Если вы считаете null false, вы можете использовать эту проверку if:

if (properties?.readModeOnly == true) {

}

Или, если null считается true, хотя это кажется нелогичным:

if (properties?.readModeOnly != false) {

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