Advertisement
Guest User

Untitled

a guest
May 30th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.52 KB | None | 0 0
  1. sealed trait Email {
  2.   def email(): String
  3. }
  4.  
  5.  
  6. // unvalidated
  7. case class EmailU(email: Email) extends Email
  8.  
  9. // validated
  10. sealed trait EmailV extends Email {
  11.   def email(): String
  12. }
  13. private case class EmailV_(email: String) extends EmailV
  14. object EmailV {
  15.  
  16.   def apply(email: String): Either[EmailValidationFailure, EmailV] = {
  17.     Right (EmailV_(email))
  18.   }
  19.  
  20.   def unapply(arg: EmailV): Option[String] = Some(arg.email())
  21. }
  22.  
  23. trait EmailValidationFailure
  24. case object InvalidEmail extends EmailValidationFailure
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement