Несоответствующее и неявное преобразование числовых типов противоречиво, т. Е. Различаются между выражениями «для / понимания» и операциями присваивания.Пожалуйста, не стесняйтесь доказать обратное или хотя бы точку, в которой приведенный ниже аргумент неверен:
Фактически, во время числового присваивания тип назначения является доминирующим.
var l:Long = 0
становится:
val l: Long = 0L
var l:Long = 0.toInt
становится:
var l: Long = 0.toInt.toLong
Во время выражений «для / понимания» Тип источника доминирует:
for (i:Long <- 0 to 1000000000L) { }
становится:
0.to(1000000000L).foreach(((i: Long) => ()))
for (i <- 0L to 1000000000L) { }
становится: scala.this.Predef.longWrapper(0L).to(1000000000L).foreach[Unit](((i: Long) => ()))
(ps: outputгенерируется с помощью флага компилятора "-Xprint: typer -e". ds)