मैं कुछ Scala कोड लिख रहा हूँ जो Apache POI API का उपयोग करता है। मैं इसमें शामिल पंक्तियों पर पुनरावृति करना चाहूंगा java.util.Iterator
जो मुझे शीट वर्ग से प्राप्त होते हैं। मैं एक में itter का उपयोग करना चाहते हैंfor each
स्टाइल लूप , इसलिए मैं इसे एक देशी स्काला संग्रह में बदलने की कोशिश कर रहा हूं, लेकिन भाग्य नहीं होगा।
मैंने स्काला रैपर वर्गों / लक्षणों को देखा है, लेकिन मैं उन्हें सही तरीके से उपयोग करने का तरीका नहीं देख सकता। मैं क्रिया का उपयोग किए बिना स्काला में जावा संग्रह पर पुनरावृति कैसे कर सकता हूंwhile(hasNext()) getNext()
लूप शैली का ?
यहाँ मैंने सही उत्तर के आधार पर कोड लिखा है:
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)
}
}
}