So take this trait
trait SomeTrait{
  val x:Int
  val y:Int
  val z=x*y
}
And then this implementation
class SomeImpl extends SomeTrait{
  val x=5
  val y=2
  println(z) //prints 0 why?
}
Why does it print 0? and how can I avoid that! I want z to be a val, in case it is some kind of expensive computation.