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

use*_*367 3 java scala list seq

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

var wordList = Seq.empty[String]

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

println(wordList.isEmpty)
Run Code Online (Sandbox Code Playgroud)

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

Car*_*arl 8

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

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

println(wordList.isEmpty)
Run Code Online (Sandbox Code Playgroud)

或者:

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

println(wordList.isEmpty)
Run Code Online (Sandbox Code Playgroud)

甚至:

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

println(wordList.isEmpty)
Run Code Online (Sandbox Code Playgroud)


Chr*_*tin 6

您可以附加到不可变,Seqvar通过写入重新分配给结果

wordList :+= x.word
Run Code Online (Sandbox Code Playgroud)

这种表达wordList = wordList :+ word方式与x += 1去世的方式相同x = x + 1.