Slide 30
Slide 30 text
4DBMBͰ"MXBZTWBMJEΛ࣮ݱ͢Δվ
class Person private (val name: String, val age: Int)
object Person {
def spawn(name: Indefinite[String], age: Indefinite[Int]): Person = {
(name.validateWith(validateName), age.validateWith(validateAge)) match {
case (Valid(validName), Valid(validAge)) =>
new Person(validName, validAge)
case (validityName, validityAge) =>
throw new Exception((validityName.errors ++ validityAge.errors).mkString(", "))
}
}
private def validateName(name: String): List[String] = {
if (name.isEmpty) List("name cannot be blank") else List.empty
}
private def validateAge(age: Int): List[String] = {
if (age < 0) List("age must be zero or a positive number") else List.empty
}
}