Итак, вот что я хочу сделать: у меня есть этот набор значений Nullable:
val orderDemand: String? = cell.orderDemand
val orderNumber: Int? = cell.orderNumber
val orderConceal: Boolean? = cell.orderConceal
val scriptCode: String? = cell.scriptCode
val scriptTimestamp: Long? = cell.scriptTimestamp
Дело в том, что иногда они бывают нулевыми, поэтому я не могу просто инициализировать значения как Non-null.
Я хочу создать функцию или класс, который может работать с потенциальными десятками значений и должен выглядеть следующим образом:
executeIfNotNull(
cell.orderDemand,
cell.articleImageURL,
cell.articleTitle,
cell.scriptCode,
cell.scriptTimestamp){ orderDemand, orderNumber, orderConceal, scriptCode,
scriptTimestamp ->
doSomethingWithAllTheseNonNullValues(...)
}
Я не смог найти никакого рабочего решения наИнтернет для фактических множественных значений, но явные решения для 2 или максимум 3 значений. Я действительно сталкивался с этим решением для 6 значений:
private fun <A,B,C,D,E,F,T> nonNullMultipleCheck(
a:A, b:B, c:C, d:D, e:E, f:F, execute: (A, B, C, D, E, F) -> T) {
if(a!=null && b!=null && c!=null && d!=null && e!=null && f!=null) run {
execute(a, b, c, d, e, f)
}
}
Извините, но это может сделать только шутка программиста. Я ищу решение, в котором я могу использовать Array или Set или Vararg, где я могу дать все обнуляемые значения в качестве параметров и получить доступ к лямбда-типу результата по имени ({ orderDemand, orderNumber, orderConceal, scriptCode, scriptTimestamp ->
), как я описал в функциональной модели выше. Как я могу заставить это работать с таким количеством значений, как я хочу? Заранее спасибо!