val tagsArray = tags.split(",")
var trimmedTagsArray: Array[String] = Array()
for(tag <- tagsArray) {
trimmedTagsArray :+ tag.trim
}
之后trimmedTagsArray 为空,即使 tagsArray 包含元素,即使我省略 trim 调用。
我在这里缺少什么?
答案 0 :(得分:5)
您需要了解:+运算符。而不是修改现有的trimmedTagsArray变量,而不是:+实际上返回一个新数组,其结果是“tag.trim”附加到结尾。由于您既不会返回此结果,也不会将其分配到任何位置,因此会丢弃此值。
我相信你真正想要的是用以下内容替换你的理解线。
trimmedTagArray = trimmedTagArray:+ tag.trim
虽然这将达到你想要的效果,但到目前为止它并不是最好的解决方案。相反,请尝试以下方法......
val trimmedTagsArray = for(tag <- tagsArray) yield {
tag.trim
}
上面将创建一个val(在Scala over var中首选),它具有所需的值,同时避免可变状态。
答案 1 :(得分:2)
有效。只是为了(...){}返回单位。你想要:
for(tag <- tagsArray) yield {
trimmedTagsArray :+ tag.trim
}