Tôi đang viết một số mã Scala sử dụng API Apache POI . Tôi muốn lặp lại các hàng có trong hàng java.util.Iterator
mà tôi nhận được từ lớp Trang tính. Tôi muốn sử dụng trình vòng lặp trong một for each
vòng lặp kiểu, vì vậy tôi đã cố gắng chuyển đổi nó thành một bộ sưu tập Scala gốc nhưng sẽ không thành công.
Tôi đã xem xét các lớp / đặc điểm của trình bao bọc Scala, nhưng tôi không thể thấy cách sử dụng chúng một cách chính xác. Làm cách nào để lặp lại một tập hợp Java trong Scala mà không sử dụng while(hasNext()) getNext()
kiểu vòng lặp dài dòng ?
Đây là mã tôi đã viết dựa trên câu trả lời đúng:
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)
}
}
}