<Class<*>, (Any?) -> Unit> и хочется получить в итоге одну лямбду : (Any?) -> Unit, чтобы она выглядела так:
{
when (it) {
is (array[0].first) -> array[0].second(it)
…
}
}
можно тупо вставить цикл в лямбду-результат, но это плохо по перформансу, т.к. вызываться может часто, а массив потенциально маленький. Можно конечно написать ручками все случаи для массивов <= 10, а для длинных - уже честный цикл внутри {}, но это видимо тоже не очень
По правую сторону от is должен стоять тип. Так что array[0].first.isInstance(it)
matchingFunction = pairs.first { (type, _) -> type.isInstance(value) }.second
а как типы соотносятся? есть ли среди них родство? или нужно обработать в порядке следования в списке?
Обсуждают сегодня