val tagsArray = tags.split(",")
var trimmedTagsArray: Array[String] = Array()
for(tag <- tagsArray) {
trimmedTagsArray :+ tag.trim
}
trimmedTagsArray之后是空的,即使tagsArray包含元素,即使我省略了trim调用。
我在这里想念什么?
您需要了解 :+ 运算符。:+ 实际上不是修改现有的 trimmedTagsArray 变量,而是返回一个新数组,并将表达式“tag.trim”的结果附加到末尾。由于您既没有返回这个结果,也没有将它分配到任何地方,所以这个值被丢弃了。
我相信您实际上正在寻找的是用以下内容替换您的理解中的行。
trimmedTagArray = trimmedTagArray :+ tag.trim
虽然这将完成您想要的,但是,它不是迄今为止最好的解决方案。相反,请尝试以下...
val trimmedTagsArray = for(tag <- tagsArray) yield {
tag.trim
}
以上将创建一个 val(在 Scala 中优于 var),它具有所需的值,同时避免可变状态。
有用。只是 for(...) {} 返回 Unit。你要 :
for(tag <- tagsArray) yield {
trimmedTagsArray :+ tag.trim
}