假设我为我的Scala应用程序定义了错误.我想他们是Error,Warning和Ok.我希望 Error并Warning包含一个人类可读的短信.
我还想分配数字代码(0 - for Ok,1 - for Warning和2 - for Error)来查找错误列表中最严重的错误.
所以,我定义这个错误的东西如下:
object MyErrors {
abstract sealed case class MyError(code: Int, maybeMessage: Option[String])
object Ok extends MyError(0, None)
final case class Warning(message) extends MyError(1, Some(message))
final case class Error(message) extends MyError(2, Some(message))
}
是否有意义?你会如何实现它?
根据我的几个问题:
sealed trait还是简单abstract classMyErrors对象中?Int领域吗?您可以使用模式匹配进行过滤.Ok作为的一个实例MyError的外观语义错误.我宁愿用StatusErroneousStatusEither或Validation作为替代方案?