Scala for 循环。以简洁的方式获取索引

标签 scala loops yield

在这段代码中,我想增加 index把它放在每个 yield结果。

var index=0

for(str <- splitToStrings(text) ) yield  {

  if (index != 0) index += 1               // but index is equal to `0` all the time

  new Word(str, UNKNOWN_FORM, index )
}

为什么我不能改变index ?那么实现这个逻辑的最佳方法是什么,尽量简洁?

最佳答案

zipWithIndex大多数类似序列的集合上的方法会给你一个从零开始的索引,随着每个元素递增:

for ((str, index) <- splitToStrings(text).zipWithIndex)
  yield new Word(str, UNKNOWN_FORM, index)

关于Scala for 循环。以简洁的方式获取索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883875/

相关文章:

scala - 如何将 Option[X] 的 Scala 集合转换为 X 的集合

scala - 尽管失败,如何进行执行Future序列?

java - 如何在 while-if 语句中使用单个变量遍历一组数字

ruby - 如何计算迭代器调用 yield 的次数?

python - 使用Scrapy解析站点,跟随Next Page,写成XML

scala - 对测试用例进行分组或规范 2 中的 "shared_examples_for"等效项

scala - Dataproc 返回 StatusRuntimeException 找不到集群

php - 如何使用foreach输出将多条记录插入mysql?

c# - 使用BackgroundWorker 来执行引发我监听的事件的工作是否合适

python - 生成器表达式中的多个产量? Python