我不太了解以下情况:
object Social extends App {
def add(repo: Map[String, Set[String]], name: String) =
repo + (name -> Set())
var r = Map[String, Set[String]]()
println(add(r, "Jim"))
这样,一切都很好。 但是,如果我尝试重新影响r,则该程序不再编译:
var r = Map[String, Set[String]]()
r = add(r, "Jim") // problem
println(add(r, "Jim"))
现在存在类型不匹配:
[error] /Users/pom/workspace/coursera/example/src/main/scala. /example/Social.scala:7: type mismatch;
[error] found : scala.collection.immutable.Map[String,scala.collection.immutable.Set[_ <: String]]
[error] required: scala.collection.immutable.Map[String,Set[String]]
为什么推理会改变?
答案 0 :(得分:4)
有时编译器无法弄清空集合的预期类型。
这将解决它。
repo + (name -> Set.empty[String])