如何在scala中迭代lazy iterable?来自stanford-tmt

时间:2015-08-06 13:14:45

标签: scala

Scala新手在这里,

我正在使用stanford的主题建模工具包

它有一个LazyIterable[(String, Array[Double])]

类型的惰性迭代

我应该如何迭代这个可迭代的所有元素说it来打印所有这些值?

我试过

这样做
while(it.hasNext){

System.out.println(it.next())

}

给出错误

 error: value next is not a member of scalanlp.collection.LazyIterable[(String, Array[Double])]

这是API来源 - > iterable_name - >

中的InferCVB0DocumentTopicDistributions

http://nlp.stanford.edu/software/tmt/tmt-0.4/api/edu/stanford/nlp/tmt/stage/package.html

2 个答案:

答案 0 :(得分:2)

基于its source code,我可以看到LazyIterable实现了标准的Scala Iterable接口,这意味着您可以访问所有Scala集合实现的所有标准高阶函数 - 例如mapflatMapfilter

打印所有值时您感兴趣的是foreach。所以试试这个(不需要while循环):

it.foreach(println)

答案 1 :(得分:1)

看起来像方法调用问题,只需查看LazyIterable的源代码,查看第46行

override def iterator : Iterator[A]

当你得到一个LazyIterable实例时,调用迭代器方法,然后就可以做你想做的了。