<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
а как типы соотносятся? есть ли среди них родство? или нужно обработать в порядке следования в списке?
Обсуждают сегодня