Variable binding oddity
Hi,
can someone explain this to me:
scala> import xml._
import xml._
scala> val a:Node = <a/>
a: scala.xml.Node = <a></a>
scala> a match {case e:Elem => e}
res0: scala.xml.Elem = <a></a>
scala> a match {case e @ Elem(_,_,_,_,_*) => e}
res1: scala.xml.Node = <a></a>
Why Node and not Elem?
This works as expected:
scala> class Foo(a:Int)
defined class Foo
scala> case class Bar(i:Int) extends Foo(-i)
defined class Bar
scala> val f:Foo=Bar(1)
f: Foo = Bar(1)
scala> f match {case b:Bar => b}
res6: Bar = Bar(1)
scala> f match {case b @ Bar(_) => b}
res7: Bar = Bar(1)
-Carsten