1

编辑/更新:问题已解决!

这有点奇怪,因为在 Scala 中迭代集合通常是直截了当的,但是在使用案例类中的双精度数组时,我确实遇到了编译错误。错误说:

 error: value foreach is not a member of Array[Double] for(d <- data.data_arr) 

好的,这是案例类:

case class StatsData (name: String,
                  timeUnit: TimeUnit,
                  data_arr: Array[Double],
                  min: Double,
                  max: Double){}

这是关键点:

  /*Doesn't work */ 
 for(d <- data.data_arr) {         
  println(d) // can't fetch value d here   
  number = new Number(col, row, d)
 }

奇怪的是,无论我使用哪种迭代,它根本不起作用。例如使用数组索引

 for (i <- data_arr.length-1)

以及将数组转换为序列会引发与上述完全相同的错误;

for(d <- data.data_arr.toSeq)

我究竟做错了什么?

感谢您对此事的任何帮助。

编辑/更新:问题已解决!

事实证明,问题的原因是 IntelliJ 的项目设置或结构中的问题,我不能肯定地说,但通过创建一个新项目解决了所有问题。相同的代码现在运行得很好。对此感到抱歉,但几乎所有帖子都帮助我追查了问题。

@yakshaver

“yield”表达式究竟是用来做什么的?

感谢所有的帮助。

4

1 回答 1

0

两个都

Array(1, 2, 3) foreach println

for(i <- Array(1, 2, 3)) yield i

for(i <- Array(1, 2, 3)) { println(i) }

对我来说在 2.10.0-RC3 中工作得很好。

于 2012-12-15T06:43:55.737 回答