Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sealed trait Email {
- def email(): String
- }
- // unvalidated
- case class EmailU(email: Email) extends Email
- // validated
- sealed trait EmailV extends Email {
- def email(): String
- }
- private case class EmailV_(email: String) extends EmailV
- object EmailV {
- def apply(email: String): Either[EmailValidationFailure, EmailV] = {
- Right (EmailV_(email))
- }
- def unapply(arg: EmailV): Option[String] = Some(arg.email())
- }
- trait EmailValidationFailure
- case object InvalidEmail extends EmailValidationFailure
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement