2013-06-22 179 views
3

双其可以使用像波纹管for循环斯卡拉

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

,但它不可能使用这种

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

因为如果这个元素是创建Range.Partial [Double,scala.collection.immutable.NumericRange [Double]]哪些没有地图

要用for-loop与Double,该如何处理?

回答

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的源代码scala.collection.immutable.Range.Partial类,你可以看到这背后的reasoning

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