为什么以下代码无法输入check:
var a = Map.empty[String, Integer]
var b: Integer = a.getOrElse("", 0)
b += 1
b = b + 1
val c: Integer = a.getOrElse("", 0) + 1
前四行很好,但最后一行失败,出现“Type mismatch:expected String actual Int”。当然,这与2号线和2号线的作用相同。 4合并?
答案 0 :(得分:4)
尝试使用Int
代替Integer
:
var a = Map.empty[String, Int]
var b: Int = a.getOrElse("", 0)
b += 1
b = b + 1
val c: Int = a.getOrElse("", 0) + 1
Int
和Integer
在Scala中的类型不同。来自this帖子:
Integer只是java.lang.Integer的别名。 Int是具有额外功能的Scala整数。
所以,当你a.getOrElse("", 0)
时,返回类型是Integer
和Int
的常见超类型,即Any
。然后你尝试添加to an
Any`,这不起作用!