Scala empty class,object,traits

Viewed 2534

I want to learn scala language.
In many documents or video tutorials, I see scala developers create empty class or objects and use that on another class as parameter or implement empty traits !
for example :

object Controller {
  sealed trait Controller
  case object Login extends Controller
  case object Logout extends Controller
}

Or this :

sealed trait Expression
case class Number(num: Int) extends Expression
case class Plus(a: Expression, b: Expression) extends Expression
case class Minus(a: Expression, b: Expression) extends Expression

object ExpressionEvaluate {
  def value(expression: Expression): Int = expression match {
    case Number(value) => value
    case Plus(a, b) => value(a) + value(b)
    case Minus(a, b) => value(a) - value(b)
  }
}

I want to know what is this pattern ?
What is meaning empty class ,Object or traits ?
Why developers use this pattern ?

1 Answers
Related