我有一个Number类型的字段,有人可以告诉我为什么下面的代码不起作用以及如何优雅地修复它。
val n:Number = 10.0
n match {
case d:Double=>println(d)
}
error: pattern type is incompatible with expected type
答案 0 :(得分:7)
Scala的Double
与java.lang.Double
不同,java.lang.Number
是java.lang.Double
的子类,所以它永远不可能匹配。如果您与val n: Number = 10.0
n match {
case d: java.lang.Double => println(d)
case _ => println("Not a Double")
}
{{1}}
我不会说这有什么优雅的,如果不知道你想用它做什么就很难做出任何进一步的建议。