Как бороться с несоответствием типов - String и String? - PullRequest
0 голосов
/ 21 мая 2019

Я получаю несоответствие типов, когда хочу выполнить назначение. Обязательное значение - String, но у меня есть String ?. Мой вопрос: как мне с этим справиться, с помощью метода toString или, вернее, добавив ненулевой заявленный (!!) вызов. Мне интересно, какой из них лучше для безопасности или, возможно, производительности. Вопрос скорее о лучших практиках для языка.

Ответы [ 4 ]

2 голосов
/ 21 мая 2019

вы можете сделать так

0 голосов
/ 21 мая 2019

Мне нравится подход takeIf:

val someString = nullableString.takeIf { it != null } ?: ""

someString будет принимать значение nullableString, если оно не равно нулю.Если это значение равно NULL, то оно будет установлено на "".

. Мне особенно нравится этот подход на уровне обслуживания, поэтому человеку, использующему мой сервис, больше не нужно обрабатывать нулевые значения.Очевидно, что логика между {} может быть гораздо более сложной, чем этот пример.

0 голосов
/ 21 мая 2019

Есть много способов. Это зависит от требований

var str1: String? = null

//....

str1.notNull{ //no default value
    // your code
    str2 = it

}

или если вы хотите указать значение, если str1 имеет значение null

str2 = str1?:"default_value"
0 голосов
/ 21 мая 2019

Старайтесь избегать использования оператора !!. Его следует использовать, когда вы на сто процентов уверены, что нет нуля. Всегда лучше использовать оператор Elvis (выражение по умолчанию, которое оценивается и присваивается, если выражение с левой стороны равно нулю)

val s1: String? = null
val s2: String = s1 ?: "default value if s1 is null"

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