【问题标题】:Scala generator from function来自函数的 Scala 生成器
【发布时间】:2013-10-31 20:35:02
【问题描述】:

我已经从 Java API 生成函数,Java 代码看起来像

val iter = dict.getIndexWordIterator(typeWord)

while (iter.hasNext){ 
    val witer = iter.next().getWordIDs() //witer: List[..] else finish
    .. //make common list from all  witer
}

我想为所有这些代码和“for”请求“

(for(x <- 1 to 1000000; if iter.hasNext) yield iter.next.getWordIDs).flatten

可以提供帮助,但这对我来说既丑陋又愚蠢。是否可以更智能地做到这一点?

【问题讨论】:

    标签: scala generator


    【解决方案1】:
    import scala.collection.JavaConversions._ // so we can treat java iterator as scala one
    iter.take(1000000).flatMap(_.getWordIDs).toArray // or to something more suitable to you
    

    最后一步是可选的——你可以让你的集合保持惰性并在一段时间后严格它

    【讨论】:

    • 我尝试从生成的函数和条件中获取生成器。我不知道这里是什么以及为什么 foo。 x
    • @user2233374 所以你对获得前 N 个结果不感兴趣?然后放弃采取步骤,你最终会得到iter.flatMap(_getWordIDs).toArray
    • iter 不是 Seq。它是仅具有“next”和“hasNext”方法的对象。无法编译“iter.flatMap(_getWordIDs)”
    • @user2233374 if iter is java.util.Iterator 我写的第一行就可以解决这个问题
    • @user2233374 这是最小且有效的示例:scalakata.com/5274232be4b0b1a1c4dafbc3(点击绿色按钮获取结果)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多