Вот немного кода, который довольно идиоматичен ИМХО:
infix fun <T> Collection<T>?.prependIfNotEmpty(other: Collection<T>): Collection<T>? =
if (this?.isNotEmpty() == true)
other + this
else
this
// or for non nullable lists your approach
infix fun <T> Collection<T>.prependIfNotEmptyNonNull(other: Collection<T>): Collection<T> = other.takeIf { isNotEmpty() }.orEmpty() + this
использование
listOf(1, 2, 3) prependIfNotEmpty listOf(-1, 0) // [-1,0,1,2,3]
listOf("two", "three", "four").prependIfNotEmpty(listOf("zero", "one")) // ["zero", "one", "two", "three", "four"]
val list: List<Float>? = null
list prependIfNotEmpty listOf(3.5, 5.6) // null
//for prependIfNotEmptyNonNull the same usage
Возможно, есть более идиоматический способ, но я все еще не понял его.
Надеюсь, это поможет.