this question has answer here:
- scala class constructor parameters 4 answers
let's have
object error{ abstract class reason{def p:p} case class a(p:p) extends reason case class b(p:p) extends reason ... }
and want add special case of b:
object error{ abstract class reason{def p:p} case class a(p:p) extends reason class b(val p:p) extends reason{ def apply(p:p) = new b(p) def unappply(b:b) = if(b == null) none else some(b.p) } case class specialb(override val p:p) extends b(p) ... }
in change, why must declare parameter p in b val , why didn't have when b case class?
all parameters of case class constructor exposed public values, not case plain class, val
must used make parameter public.
Comments
Post a Comment