将元素添加到Scala中的Seq [String]

时间:2014-10-27 01:13:10

标签: java list scala seq

我正在尝试在Scala中创建一个单词列表。我是这门语言的新手。我已经阅读了很多关于你如何不能编辑不可变对象的帖子,但没有一个能够向我展示如何在Scala中创建我需要的列表。我使用var初始化,但这没有帮助。

var wordList = Seq.empty[String]

for (x <- docSample.tokens) {
  wordList.++(x.word)
}

println(wordList.isEmpty)

我非常感谢对此有所帮助。我理解对象在Scala中是不可变的(尽管变量不是),但我需要的是一些简明的信息,为什么上面总是打印“true”,以及如何使列表添加docSample.tokens.word中包含的单词

4 个答案:

答案 0 :(得分:8)

您可以使用val并仍然保持wordlist不可变,如下所示:

val wordList: Seq[String] = 
  for {
    x <- docSample.tokens     
  } yield x.word

println(wordList.isEmpty)

可替换地:

val wordList: Seq[String] = docSample.tokens.map(x => x.word)     

println(wordList.isEmpty)

甚至:

val wordList: Seq[String] = docSample.tokens map (_.word)     

println(wordList.isEmpty)

答案 1 :(得分:5)

您可以附加到不可变Seq并通过编写

var重新分配给结果
wordList :+= x.word

该表达式与wordList = wordList :+ wordx += 1相同的方式移植到x = x + 1

答案 2 :(得分:0)

这将有效:

wordList = wordList:+(x.word)

答案 3 :(得分:-1)

几个小时后,我发了一个问题,一分钟后就发现了。

wordList =(x.word):: wordList

此代码可以解决遇到同样问题的任何人。