2013-06-22 3 views
3

его можно использовать как сильфонадля цикла с двойной в Scala

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

, но это не представляется возможным использовать этот

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

, потому что если элемент Double, в создать Range.Partial [Double, scala.collection.immutable.NumericRange [Double]] которые не имеют map.

Чтобы использовать для петли с Двойной, как с этим бороться?

ответ

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 

Update

В исходном коде для Scala scala.collection.immutable.Range.Partial класса вы можете увидеть их reasoning за это.

Невозможно узнать, какой размер шага по умолчанию для вашего диапазона, в отличие от диапазона Integer.