Scala数字类型模式匹配

时间:2015-03-24 23:44:13

标签: scala

我有一个Number类型的字段,有人可以告诉我为什么下面的代码不起作用以及如何优雅地修复它。

val n:Number = 10.0
n match {
    case d:Double=>println(d)
}

error: pattern type is incompatible with expected type

1 个答案:

答案 0 :(得分:7)

Scala的Doublejava.lang.Double不同,java.lang.Numberjava.lang.Double的子类,所以它永远不可能匹配。如果您与val n: Number = 10.0 n match { case d: java.lang.Double => println(d) case _ => println("Not a Double") }

匹配,则可以
{{1}}

我不会说这有什么优雅的,如果不知道你想用它做什么就很难做出任何进一步的建议。