相关疑难解决方法(0)

为什么"for/comprehension"表达式与(!)赋值操作之间的数值类型的隐式转换不一致?

为什么"for/comprehension"表达式的数值类型的desugaring和隐式转换与(!)赋值操作相比不一致?

我相信对此有很多一般性的观点,但我无法找出当前行为的简明和合理的解释.[参考:"Scala for/comprehension的行为......" ]为了正确起见,下面的所有翻译都是使用scala编译器生成的("scalac -Xprint:typer -e")

例如,在隐式数字赋值转换期间,Destination类型占主导地位:

来源:var l:Long = 0
结果:val l: Long = 0L

来源:var l:Long = 0.toInt
结果:var l: Long = 0.toInt.toLong

在"for/comprehension"表达式的隐式转换期间,Source类型占主导地位:

来源: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) => ()))

numerical types scala list-comprehension implicit-conversion

1
推荐指数
1
解决办法
290
查看次数