我试图基于lat和long给出循环矩阵但是,当我尝试构建时,我得到了这个错误。
错误:(55,21)值foreach不是Range.Partial的成员[Double,scala.collection.immutable.NumericRange [Double]] for(i< - lat0 to lat1){
错误:(56,23)值foreach不是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 :(得分:0)
此处的问题是您的lat0
,lat1
,lon0
和lon1
是双打。
如果您执行[Int] to [Int]
,它将返回Range.Inclusive
,其中Iterable
实施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
。
答案 1 :(得分: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
}
}
}