« Return to Thread: Variable binding oddity

Variable binding oddity

by csar :: Rate this Message:

Reply to Author | View in Thread

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

 « Return to Thread: Variable binding oddity