Невозможно вернуть два типа одновременно. Вы должны определить это каким-либо образом.
Из List
или Set
Вы можете создать функцию расширения , которая создастпустая коллекция из существующей.
fun <T> List<T>.empty() = emptyList<T>()
fun <T> Set<T>.empty() = emptySet<T>()
Из этого вы можете использовать ее как любую другую функцию списка / набора.
val emptyList: List<Int> = listOf(1,2).empty()
Будьте осторожны. Это не преобразует текущий список. Он просто создает новый пустой.
Из неизвестной коллекции, такой как Iterator
Чистый Iterable без верхнего класса:
fun <T> empty() = object : Iterable<T> {
override fun iterator(): Iterator<T> = object : Iterator<T> {
override fun hasNext(): Boolean = false
override fun next(): T = throw IllegalStateException("No Item")
}
}
Вы можете использовать ужеопределенная функция Iterable.toSet()
и Iterable.toList()
val emptyList: List<Int> = empty<Int>().toList()