在这段代码中,我想增加 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/