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 ?