Scala迭代Case类的Double数组

时间:2012-12-15 05:40:39

标签: arrays scala

编辑/更新:问题已修复!

这在迭代集合时有点奇怪 在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”表达式?

感谢所有帮助。

1 个答案:

答案 0 :(得分: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中很好地工作。