Почему диапазон преобразовывается в вектор после операции карты?
После курсов Scala на Coursera Мартин Одерский показал пример кода:
1 to 5 map ( i => i*i )
И он сказалRange
превращается вVector
потому что они имеют один и тот же интерфейс (IndexedSeq
) и результат не может быть представлен в видеRange
(это было более ясно в его примере, так как он создал пару, которая не может быть представлена в видеRange
).
Я не уверен, чтобы понять, потому что я думаю, что он сказал ранее, что в выражении for 1-й генератор будет определять тип элемента, который будет получен, и это не всегда верно, по крайней мере дляRange
.
И я не уверен, чтобы понять, почему выводVector
, потому чтоVector
может не быть единственной другой реализацией, которая может представлять результат, вычисленный выше.
Может кто-нибудь помочь мне понять эту часть, пожалуйста?