SORU
30 Ocak 2009, Cuma


Yineleme Java koleksiyonları üzerinde Scala içinde

Apache POI API kullanan bazı Scala kod yazıyorum. Satırları Sayfasını sınıfı aldığım java.util.Iterator içerdiği ispat etmek istiyorum. Yerel Scala koleksiyonu dönüştürmek için çalışıyorum yani 3 ** tarzı bir döngü yineleyici kullanmak istiyorum ama şans yok.

Scala sarıcı sınıflar/nitelikler baktım, ama bunları doğru şekilde kullanmak için nasıl göremiyorum. Nasıl ayrıntılı döngü while(hasNext()) getNext() stil kullanmadan Scala Java bir koleksiyon üzerinde yineleme mı?

İşte doğru cevap dayanarak yazdığım kodu:

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)
        }
    }
}

CEVAP
26 EKİM 2009, PAZARTESİ


2.8, tüm yapmanız gereken, Scala olarak zaten uygun dönüşüm beyan ettiği JavaConversions nesne, almak.

import scala.collection.JavaConversions._

Bu önceki sürümleri, ama işe yaramaz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dive In

    Dive In

    17 Temmuz 2013
  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009