Зачем Scala для циклов с целочисленными значениями автобоксов при конвертации в коллекцию? - PullRequest
0 голосов
/ 14 апреля 2020

При использовании range в Scala 2.12 и продолжении итерации по элементам, почему целые попадают в java.lang.Integer, когда они получаются? Приведенный ниже код выделяет 10 000 целых чисел в куче.

val boxedSeq = for (i <- 1 to 10000) yield i
println("Done")

Если вместо выдачи вы напечатаете его, целые числа не создаются. Является ли root причиной того, что универсальные c последовательности не могут содержать примитивы 1 ?

for (i <- 1 to 10000) println(i)
println("Done")

10k целых чисел

целых чисел

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете проверить:

https://docs.scala-lang.org/tutorials/FAQ/yield.html

Когда вы используете yield with для в Scala, оно переводится в

.map((i) => {...})

Это означает, что вы создаете список, и он должен содержать объекты.

Когда вы не используете yield, это:

.foreach(i) {...}

И там вам не нужен какой-либо объект.

...