В чем разница между Iterator и Iterable в scala?
Я думал, что Iterable представляет собой набор, который я могу выполнить, и Iterator является "указателем" на один из элементов в итеративном наборе.
Однако Iterator имеет такие функции, как forEach, map, foldLeft. Его можно преобразовать в Iterable через toIterable. И, например, scala.io.Source.getLines возвращает Iterator, а не Iterable.
Но я не могу сделать groupBy на Iterator, и я могу сделать это на Iterable.
Итак, какова связь между этими двумя, Iterator и Iterable?