Встречные вопросы: что вы хотите добавить вместо? а какие у тебя предпочтения?
Если мне нужно значение по умолчанию, я использую foo ?: "<default>"
.
Если все в порядке, если напечатано null
, я просто сохраняю это как есть, т.е. "$foo $bar"
.
Если вместо этого вы просто хотите объединить список строк, которые могут содержать или не содержать null
значений, вас также может заинтересовать что-то вроде следующего:
listOfNotNull(foo, bar).joinToString(" ")
Теперь по поводу вашего обновления вопроса ... Предполагая что-то вроде следующего в качестве класса данных:
data class Location(val line1 : String?, val line2 : String?, val line3part1 : String?, val line3part2 : String?)
Возможное использование listOfNotNull
при условии, что пустые строки не должны печататься, может выглядеть так:
with(yourLocation) {
// the outer listOfNotNull contains the lines:
listOfNotNull(
line1,
line2,
// inner ListOfNotNulls are specific concatenations, which may lead to an empty line (that's why takeIf is also here)
listOfNotNull(line3part1, line3part2).takeIf { it.isNotEmpty() }
?.joinToString(" ")
).joinToString("\n")
}.run(::println)
}
Если вам потребуется что-то вроде "($nullable)"
, я бы пошел на:
nullable?.let { "($it)" }
, который затем может быть использован в пределах listOfNotNull
.