可以在匹配大小写中使用Scala案例对象

mat*_*ter 7 scala

可以在匹配大小写中使用Scala案例对象吗?

例如,这并不能正常工作:

abstract class A
case object B extends A

object something {
  val b = B
  b match { case _:B => println("success") }
}

not found: type B
b match { case _:B => println("success") }
                 ^
Run Code Online (Sandbox Code Playgroud)

Lee*_*Lee 12

您需要指定B.type:

object something {
  val b = B
  b match { case _:B.type => println("success") }
}
Run Code Online (Sandbox Code Playgroud)


mat*_*ter 9

糟糕,似乎这也编译:

abstract class A
case object B extends A

object something {
  val b = B
  b match { case B => println("success") }
}
Run Code Online (Sandbox Code Playgroud)

Scala小提琴:Scala案例对象可用于匹配案例