Если вы действительно хотите деструктурировать его следующим образом, я бы также разделил вашу makeRange
-функцию, например:
fun makeLeftRange(i: Int) = i - 1
fun makeRightRange(i: Int) = i + 1
fun makeRange(i: Int) = makeLeftRange(i) to makeRightRange(i) // if you still need it...
Тогда вы можете деструктурировать следующим образом:
val (leftRange, rightRange) = listOfData.map(::makeLeftRange) to listOfData.map(::makeRightRange)
Или, если это действительно такая простая функция, почему бы не использовать вместо нее следующее:
val (leftRange, rightRange) = listOfData.map(Int::dec) to listOfData.map(Int::inc)
// or
val (leftRange, rightRange) = listOfData.map { it - 1 } to listOfData.map { it + 1 }
Если вы хотите сохранить makeRange
как есть и хотите сделать это таким образом,будет немного уродливее, например:
val (leftRange, rightRange) = listOfData.map(::makeRange).let {
listOfPairs -> listOfPairs.map { it.first } to listOfPairs.map { it.second }
}
В основном повторное использование того, что вы показали в дополнительном let
утверждении.