4

它可以像下面这样使用

val ls = for(i <- 1 to 5) yield i

但不可能使用这个

val la:Double = 100000000000000d
val ls = for(i <- la to la + 1) yield i

因为如果元素是Double创建没有map的Range.Partial[Double,scala.collection.immutable.NumericRange[Double]]

使用 for 循环和Double,如何处理?

4

1 回答 1

5

我认为您需要指定by将范围从转换Range.Partial[Double,scala.collection.immutable.NumericRange[Double]]为的方法scala.collection.immutable.NumericRange[Double]

例如

for (i <- la to la + 1 by 1.0) yield i

更新

scala.collection.immutable.Range.Partialclass 的 scala 源代码中,您可以看到他们背后的推理。

与使用整数范围不同,无法知道范围的默认步长是多少。

于 2013-06-22T03:00:31.440 回答