Por que um intervalo é transformado em vetor após a operação do mapa?
Após os cursos de Scala na Coursera, Martin Odersky mostrou um código de exemplo que é:
1 to 5 map ( i => i*i )
E ele disse que oRange
é transformado em umVector
porque eles compartilham a mesma interface (IndexedSeq
) eo resultado não pode ser representado como umRange
(ficou mais claro em seu exemplo, já que ele gerou um par que não é representável comoRange
).
Eu não tenho certeza de entender porque eu acho que ele disse anteriormente que em uma expressão para o primeiro gerador irá determinar o tipo de elemento que será produzido, e nem sempre parece ser verdade, pelo menos paraRange
.
E eu não tenho certeza de entender por que a saída éVector
, PorqueVector
pode não ser a única outra implementação que pode representar o resultado calculado acima.
Alguém pode me ajudar a entender essa parte por favor?