为什么Array's:+在内部无法理解?

ide*_*xer 3 arrays scala append

val tagsArray = tags.split(",")
var trimmedTagsArray: Array[String] = Array()
for(tag <- tagsArray) {
  trimmedTagsArray :+ tag.trim
}
Run Code Online (Sandbox Code Playgroud)

trimmedTagsArray之后是空的,即使tagsArray包含元素,即使我省略了trim调用.

我在这里错过了什么?

小智 5

您需要了解:+运算符.而不是修改现有的trimmedTagsArray变量,而不是:+实际上返回一个新数组,并在结尾附加表达式"tag.trim"的结果.由于您既不会返回此结果,也不会将其分配到任何位置,因此会丢弃此值.

我相信你真正想要的是用以下内容替换你的理解线.

trimmedTagArray = trimmedTagArray:+ tag.trim

虽然这将实现您想要的目标,但到目前为止它并不是最佳解决方案.相反,尝试以下......

val trimmedTagsArray = for(tag <- tagsArray) yield {
  tag.trim
}
Run Code Online (Sandbox Code Playgroud)

上面将创建一个val(在Scala over var中首选),它具有所需的值,同时避免可变状态.