【发布时间】:2018-08-22 19:04:11
【问题描述】:
我遇到了与多个 Seq 嵌套和可变集合相关的问题。如果我使用 Seq[Seq[SomeClass]] 并为 Seq 使用可变集合,它将在 IntelliJ 中产生类型不匹配为Type mismatch, expected: String, actual: SomeClass。如果我运行它,它会抛出
value += 不是 Seq[SomeClass] 的成员。表达式不会转换为赋值,因为接收者不可赋值。
代码如下。错误在k1Class.students += mary,代码中有注释。
package core
import scala.collection.mutable
import scala.collection.mutable.{ArrayBuffer, ListBuffer}
case class Student(age: Int, name: String)
case class Class(topic: String, students: Seq[Student])
object Test2 {
def main(args: Array[String]): Unit = {
val grades = mutable.HashMap[String, Seq[Class]]()
val classes = ListBuffer[Class]()
val students = ArrayBuffer[Student]()
val bob = Student(7, "Black")
students += bob
val musicClass = Class("music", students)
classes += musicClass
grades += ("k1" -> classes)
val k1Classes = grades.get("k1").get
for (k1Class <- k1Classes){
val mary = Student(7, "Brown")
//!!! Error here!!! Type mismatch, expected: String, actual: Student
k1Class.students += mary
}
}
}
我很迷茫为什么会这样。非常感谢!
【问题讨论】:
标签: scala collections