В идеале, вы не должны расширять конкретный класс, и особенно не класс case!
Учитывая, что нет возможности настроить SUCCESS_MESSAGE
и FAILURE_MESSAGE
, вы, вероятно, также захотите сделать этоsingletons.
Наконец, подчеркивание - это плохая вещь в именах переменных или классов Scala.Все имена UPPERCASE также не являются идиоматическими.Итак:
sealed trait Message
case object SuccessMessage extends Message
case object FailureMessage extends Message
def log(str: String, msgType: Message) = msgType match {
case SuccessMessage => println("Success: " + str)
case FailureMessage => println("Failure: " + str)
}
В качестве альтернативы, и я рекомендую порекомендовать это, вы можете обернуть фактическую строку сообщения:
sealed trait Message { def msg: String }
case class Success(msg:String) extends Message
case class Failure(msg:String) extends Message
def log(msg: Message) = msg match {
case Success(str) => println("Success: " + str)
case Failure(str) => println("Failure: " + str)
}