List#zipWithIndexとcase => ... case =>

 val cols = sheet.cols(4,8,12,16)
 (1 to 4).foreach {i =>
   val col = cols(i-1)
      :
 }

は、zipWithIndexをつかって

sheet.cols(4,8,12,16).zipWithIndex.foreach {pair =>
  val col = pair._1
  val i = pair._2
     :
}

と書くと便利で、さらに、パターンマッチをつかって

sheet.cols(4,8,12,16).zipWithIndex.foreach{p =>
  p match {
   case (col, i) => ...
  }
}

と書くと、valが無くなるが、さらにさらに

sheet.cols(4,8,12,16).zipWithIndex.foreach{
  case (col, i) => ...
}

もしくは、

for((col, i) <- sheet.cols(4,8,12,16).zipWithIndex){
  :
}

とも書ける。


すごい!!