Saya sedang menulis beberapa kode Scala yang menggunakan Apache POI API. Saya ingin mengulang baris yang ada di java.util.Iterator
yang saya dapatkan dari kelas Sheet. Saya ingin menggunakan iterator dalam for each
loop gaya, jadi saya telah mencoba mengubahnya menjadi koleksi Scala asli tetapi tidak berhasil.
Saya telah melihat kelas / sifat pembungkus Scala, tetapi saya tidak dapat melihat cara menggunakannya dengan benar. Bagaimana cara saya mengulang koleksi Java di Scala tanpa menggunakan while(hasNext()) getNext()
gaya loop verbose ?
Berikut kode yang saya tulis berdasarkan jawaban yang benar:
class IteratorWrapper[A](iter:java.util.Iterator[A])
{
def foreach(f: A => Unit): Unit = {
while(iter.hasNext){
f(iter.next)
}
}
}
object SpreadsheetParser extends Application
{
implicit def iteratorToWrapper[T](iter:java.util.Iterator[T]):IteratorWrapper[T] = new IteratorWrapper[T](iter)
override def main(args:Array[String]):Unit =
{
val ios = new FileInputStream("assets/data.xls")
val workbook = new HSSFWorkbook(ios)
var sheet = workbook.getSheetAt(0)
var rows = sheet.rowIterator()
for (val row <- rows){
println(row)
}
}
}