2017-10-22 5 views
0

私はlatとlongに基づいて行列をループしようとしていますが、ビルドしようとするとこのエラーが発生します。スカラforループエラー

Error:(55, 21) value foreach is not a member of Range.Partial[Double,scala.collection.immutable.NumericRange[Double]] for(i <- lat0 to lat1){

Error:(56, 23) value foreach is not a member of Range.Partial[Double,scala.collection.immutable.NumericRange[Double]] for(k <- lon0 to lon1){

コード:

// lat0,lat1,lon0,lon1 are parameters that are type Double 
    var count = 0.0; 
    var sum = 0.0; 

    for(i <- lat0 to lat1){ 
    for(k <- lon0 to lon1){ 
     if(this.data(i)(k) != this.noData){ 
     count += 1.0 
     sum += data(i)(k).toDouble 
     } 
    } 
    } 

答えて

0

問題ここでは、あなたのlat0lat1lon0lon1はダブルスあるあります。あなたが[Int] to [Int]を行う場合

それはIterableを実装していRange.Inclusiveを返しますforeach方法:http://www.scala-lang.org/api/2.9.0/scala/collection/immutable/Range $$ Inclusive.html

あなたは[Double] to [Double]が、しかし、Range.Partialが返されません、それはIterableない場合は、次のhttp://www.scala-lang.org/api/2.9.0/scala/collection/immutable/Range $$ Partial.html

forループを使用する必要がある場合は、Seqのような繰り返し可能なコレクションを生成してください。

0

手順を繰り返して選択する必要があります。Doubleの範囲です。使用:by

for (i <- lat0 to lat1 by 0.1) { 
    for (k <- lon0 to lon1 by 0.1) { 
     if (this.data(i)(k) != this.noData) { 
     count += 1.0 
     sum += data(i)(k).toDouble 
     } 
    } 
    }