Ответ
Iterable стоит использовать, когда нужно предоставить последовательный доступ к элементам коллекции без раскрытия её внутренней структуры. Это полезно для:
- Ленивой загрузки (например, чтение данных из сети/БД по мере необходимости).
- Работы с большими коллекциями, чтобы избежать загрузки всех элементов в память.
- Сокрытия реализации коллекции, предоставляя только итератор.
Пример:
fun fetchData(): Iterable<String> = object : Iterable<String> {
override fun iterator() = object : Iterator<String> {
private var count = 0
override fun hasNext() = count < 3
override fun next() = "Item ${count++}"
}
}
// Использование:
fetchData().forEach { println(it) }
⚠️ Если нужны операции в памяти (например, filter, map), лучше использовать Sequence или List.